Невозможно получить доступ к содержимому файла расширения

Я использую этот код, но не могу получить доступ к содержимому файла расширения, я хочу показать изображение в формате 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) {

                }

http://prntscr.com/kp25qz

0
0
49
2

Ответы 2

Библиотека файлов расширений Play APK имеет полностью открытый исходный код, и вы можете увидеть исходный код для ZipResourceFile здесь.

Похоже, что stage1_popup.gif отсутствует в вашем obb-файле. Чтобы исследовать это, почему бы не использовать adb pull, чтобы получить файл с вашего устройства и посмотреть, что он на самом деле содержит. Или загрузите исходный код и прикрепите его к своей среде IDE, чтобы вы могли перейти к вызову getInputStream () и посмотреть, где что-то не так.

Как упоминалось в этот ответ, ZipResourceFile не может обрабатывать слишком много маленьких файлов, как и ZipFile. Так что попробуйте разделить ваши файлы на большее количество каталогов.

Также вполне возможно, что нет файла с именем stage1_popup.gif.

Кроме того, вы можете получить все записи через zipResourceFile.getAllEntries() и узнать, существует ли файл.

Другие вопросы по теме