我已经实现了 APK 扩展文件下载服务,全部来自http://developer.android.com/google/play/expansion-files.html
我可以下载 APK 扩展文件,我可以使用以下代码查看该文件
try {
ZipResourceFile expansionFile = APKExpansionSupport
.getAPKExpansionZipFile(this, 3, 0);
ZipEntryRO[] zip = expansionFile.getAllEntries();
Log.e("", "" + zip[0].mFile.getAbsolutePath());
Log.e("", "" + zip[0].mFileName);
Log.e("", "" + zip[0].mZipFileName);
Log.e("", "" + zip[0].mCompressedLength);
AssetFileDescriptor fd = expansionFile
.getAssetFileDescriptor(zip[0].mFileName);
if (fd != null && fd.getFileDescriptor() != null) {
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(fd.getFileDescriptor());
mp.start();
} else {
Log.e("", "fd or fd.getFileDescriptor() is null");
}
} catch (IOException e) {
e.printStackTrace();
}
我的 obb 有文件test.mp4
并且我的代码Log.e("", "" + zip[0].mFileName);
打印test.mp4.
我fd
的是null
。为什么呢null
?我正在尝试解决但未能解决。
我只是无法读取 obb 文件中的任何文件。
访问obb扩展文件中的文件提示想法,但它对我不起作用。
创建APK扩展文件的步骤告诉从obb解压缩内容然后读取它。它可靠吗?
我需要关于最佳实践的意见。
编辑
我的日志
03-01 10:36:40.848: E/(27836): zip[0].isUncompressed() : false
03-01 10:36:40.848: E/(27836): mFile.getAbsolutePath() : /storage/sdcard0/Android/obb/smart.trigger/main.3.smart.trigger.obb
03-01 10:36:40.848: E/(27836): mFileName : test.mp4
03-01 10:36:40.848: E/(27836): mZipFileName : /storage/sdcard0/Android/obb/smart.trigger/main.3.smart.trigger.obb
03-01 10:36:40.848: E/(27836): mCompressedLength : 21657598