无法访问扩展文件内容

时间:2018-08-31 12:16:15

标签: android apk-expansion-files

我正在使用此代码,但是我无法访问扩展文件的内容,我想显示扩展文件中的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

2 个答案:

答案 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()获取所有条目,并查找文件是否存在。