- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在“/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/
我在“/sdcard/Android/obb/com.example.obbtest/vid-exp1.obb”下有一个扩展文件。它包含一个 MP4 文件,我想挂载 .obb 来读取该文件。 这就是我
我是一名优秀的程序员,十分优秀!