gpt4 book ai didi

Android - OnObbStateChangeListener.MOUNTED 为真但 isObbMounted() 为假,有什么问题吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:14 25 4
gpt4 key购买 nike

我在“/sdcard/Android/obb/com.example.obbtest/vid-exp1.obb”下有一个扩展文件。它包含一个 MP4 文件,我想挂载 .obb 来读取该文件。

这就是我正在做的安装它:

String obbDir = "/sdcard/Android/obb/com.example.obbtest/vid-exp1.obb";

.

StorageManager storage = (StorageManager) getApplicationContext().getSystemService(STORAGE_SERVICE);
storage.mountObb(obbDir, null, listener);

这是监听器代码:

OnObbStateChangeListener listener = new OnObbStateChangeListener() {
@Override
public void onObbStateChange(String path, int state) {
if (state == OnObbStateChangeListener.MOUNTED) {
toastString("Mounted! According to the listener");
//Test it with the isObbMounted()
if (storage.isObbMounted(obbDir)) {
toastString("Efectively mounted!");
} else {
toastString("Not really :(");
}
toastString(storage.getMountedObbPath(obbDir));
} else {
tuestameString("NOT mounted according to the listener");
}
}
};

不幸的是,我得到的输出是 toast “已安装!根据听众”,然后是“不是真的:(”。我设计这个测试是因为当我尝试 getMountedObbPath(obbDir) 时,我得到了一个空字符串而不是路径.我已经确定 .obb 文件存在以及所有这些,如果没有它或没有正确的加密 key ,我不会得到“已安装!...”。

我不明白为什么 OnObbStateChangeListener.MOUNTED 是 true 而 isObbMounted(obbDir) 是 false。有谁知道我做错了什么?

最佳答案

在三星设备上遇到过这个问题。当 /mnt/sdcard/ 不是目录而是指向另一个目录的符号链接(symbolic link)时(在我的例子中是 /storage/sdcard0),就会发生这种情况。

在这种情况下,StorageManager 不使用您指定的 obb 路径,而是使用已解析符号链接(symbolic link)的路径:isObbMounted("/mnt/sdcard/my.obb") 返回 false 并且 isObbMounted("/storage/sdcard0/my.obb")true

要访问挂载的 obb,您不能使用路径 obbDir,而是在第一个参数中传递给 onObbStateChange() 的路径:isObbMounted(path)

关于Android - OnObbStateChangeListener.MOUNTED 为真但 isObbMounted() 为假,有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14765294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com