Я использую этот код, но не могу получить доступ к содержимому файла расширения, я хочу показать изображение в формате 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 () и посмотреть, где что-то не так.
Как упоминалось в этот ответ, ZipResourceFile
не может обрабатывать слишком много маленьких файлов, как и ZipFile
. Так что попробуйте разделить ваши файлы на большее количество каталогов.
Также вполне возможно, что нет файла с именем stage1_popup.gif
.
Кроме того, вы можете получить все записи через zipResourceFile.getAllEntries()
и узнать, существует ли файл.