我正在使用此代码,但是我无法访问扩展文件的内容,我想显示扩展文件中的gif图像,我该怎么办?
字符串packageName = getPackageName(); 文件根= Environment.getExternalStorageDirectory();
File expPath = new File(root.toString() + "/Android/obb/" + packageName);
try {
if (expPath.exists()) {
String strMainPath = expPath
+ File.separator
+ "main."
+ getPackageManager().getPackageInfo(
getPackageName(), 0).versionCode + "."
+ packageName + ".obb";
File f = new File(strMainPath);
if (f.exists()) {
Log.e("Path ", "=====>Exists");
} else {
Log.e("Path ", "=====> Not Exists");
}
ZipResourceFile zip = new ZipResourceFile(strMainPath);
InputStream iStream = zip.getInputStream("stage1_popup.gif");
BitmapFactory.Options option = new BitmapFactory.Options();
option.inPurgeable = true;
Bitmap bitmap = BitmapFactory.decodeStream(iStream, null, option);
Glide.with(SampleDownloaderActivity.this).load(bitmap).into(image);
}
} catch (Exception e) {
}
答案 0 :(得分:0)
Play APK扩展文件库是完全开源的,您可以看到the sourcecode for ZipResourceFile here。
您的obb文件中似乎没有stage1_popup.gif。要对其进行调查,为什么不使用adb pull从设备中取出文件并查看其实际包含的内容。或下载源代码并将其附加到您的IDE,以便您可以进入getInputStream()调用并查看问题出在哪里。
答案 1 :(得分:0)
如this answer中所述,ZipResourceFile
无法处理过多的小文件,ZipFile
也无法处理。因此,尝试将文件划分到更多目录中。
此外,很可能没有任何名为stage1_popup.gif
的文件。
或者,您可以通过zipResourceFile.getAllEntries()
获取所有条目,并查找文件是否存在。