我在“/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说“Mounted!根据听众”后面跟着“Not really :(”。我设计了这个测试,因为当我尝试getMountedObbPath(obbDir)时,我得到了一个空字符串而不是路径我已经确定.obb文件存在且所有这些,没有它或没有正确的登记密钥我都不会“安装!......”。
我不明白为什么OnObbStateChangeListener.MOUNTED为true但isObbMounted(obbDir)为false。有谁知道我做错了什么?
答案 0 :(得分:2)
在三星设备上出现此问题。当/mnt/sdcard/
不是目录而是另一个目录的符号链接(在我的情况下为/storage/sdcard0
)时会发生这种情况。
在这种情况下,StorageManager
不使用您指定的obb的路径,但解析了符号链接的路径:isObbMounted("/mnt/sdcard/my.obb")
返回false
,isObbMounted("/storage/sdcard0/my.obb")
为{{ 1}}。
要访问已安装的obb,您不能使用路径obbDir,而是在第一个参数中传递给true
的路径:onObbStateChange()
。