我尝试挂载(未加密的)obb文件(APK扩展文件)。
以下代码在使用Android 4.4.4的Nexus 4上正常运行。 obb文件被挂载并且也输入了OnObbStateChangeListener,我可以在日志中看到日志行。
然而,三星Galax Tab 2(使用Android 4.1.2)上的无效。正在记录“开始安装”,但是从不输入OnObbStateChangeListener,但是,日志中不会显示任何错误或任何其他相关信息。
final StorageManager sm = (StorageManager) getApplicationContext().getSystemService(STORAGE_SERVICE);
Log.d(TAG, "Start mounting " );
sm.mountObb(
new File(Environment.getExternalStorageDirectory(),"Android/obb/com.matheapp.www.matheapp2/main.2.com.matheapp.www.matheapp2.obb").getAbsolutePath(),
new OnObbStateChangeListener() {
@Override
public void onObbStateChange(String path, int state) {
super.onObbStateChange(path, state);
Log.d(TAG, "onObbStateChange: Path: " + path);
Log.d(TAG, "onObbStateChange: State: " + state);
}
});
答案 0 :(得分:1)
我们一直在努力,我们没有找到任何解决方案,因此我们使用的是重命名为.obb的zip文件,而不是使用jobb
创建的普通obb。该解决方案适用于我们目前为止测试过的所有设备,即使在使用Android 4.1.2的Galaxy Tab中也是如此
希望这也适用于您的应用。
答案 1 :(得分:1)
我自己在某些设备上遇到过这个问题;这也可能是由于android中的一个错误:
https://code.google.com/p/android/issues/detail?id=61881
似乎唯一要做的就是开始使用AssetFileDescriptors和偏移(用于音频/视频)或输入流。在我的情况下,我不能使用任何这些,因为我需要一个字符串/文件路径,所以我想我将被迫在某处解压缩扩展文件。