android - 无法访问扩展文件内容
问题描述
我正在使用此代码,但无法访问扩展文件内容,我想显示扩展文件中的 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) {
}
解决方案
Play APK 扩展文件库是完全开源的,您可以在此处查看 ZipResourceFile 的源代码。
看起来 stage1_popup.gif 不在您的 obb 文件中。要调查它,为什么不使用adb pull将文件从您的设备中取出并查看它实际包含的内容。或者下载源代码并附加到您的 IDE,这样您就可以进入 getInputStream() 调用并查看哪里出错了。
推荐阅读
- docker - 如何通过token登录harbor,比如docker hub或者github包?
- android - 监控 GPS 是否启用
- javascript - JQuery - 使用 !important 属性切换类
- logstash - LogStash concat Filebeat 输入
- windows - 以编程方式将打印文档存储在 Windows 中
- c# - 通过脚本在 Unity URP 光照着色器中编辑偏移值
- android - UnsupportedOperationException:Serializables 不支持默认值 - Jetpack Compose Navigation
- python - 如何使用本地模块防止 pytest
- javascript - 与 Foundation Off-canvas 的行为不一致
- react-native-android - 为什么安装反应原生导航模块后应用程序不起作用?