【问题标题】:Using WebView.loadUrl(string) to load a png file stored inside the zip Expansion file使用 WebView.loadUrl(string) 加载存储在 zip 扩展文件中的 png 文件
【发布时间】:2012-08-31 18:17:50
【问题描述】:

我正在尝试使用 WebView.loadUrl(string) 显示 png 文件,其中 png 文件存储在 Android 的 zip APK 扩展文件中。扩展文件的路径是:

Environment.getExternalStorageDirectory()+"/Android/obb/com.example.myapp/main.1.com.example.myapp.obb";

所以我使用以下内容来显示文件 mypicture.png

String url = "jar:file:/" + Environment.getExternalStorageDirectory()+"/Android/obb/com.example.myapp/main.1.com.example.myapp.obb!/mypicture.png";

WebView wv;
... // code to setup the webview
wv.loadUrl(url);

我在链接处收到错误网页不可用

jar:file://storage/sdcard0/Android/obb/com.example.myapp/main.1.com.example.myapp.obb!/mypicture.png

我知道我的扩展文件在那里并且包含 png 文件,因为我有一些测试代码可以从扩展文件中提取 png 文件。当我指向提取的 png 文件 outside 时,wv.loadUrl(extracted_png_location) 会正确显示 png。我只是无法让它显示 inside zip 扩展文件的 png 文件。

那么zip文件里面的png文件的路径一定是错的吧?或者甚至可以直接在 zip 中的文件上使用 loadUrl()?

【问题讨论】:

    标签: webview zip png apk-expansion-files


    【解决方案1】:

    使用JOBB工具打包扩展文件并使用StorageManager挂载是一个不错的选择。之后,扩展文件中的文件应该可以作为文件系统中的常规文件访问。这种情况下不需要解压扩展文件。

    【讨论】:

      【解决方案2】:

      我也有同样的问题。我的 webview 内容太大而无法在应用程序中交付,但无法通过 webview 访问扩展下载的 zip,因为它需要直接路径。

      使用来自 google 的 Zip Lib 是不可取的,因为它只返回流,而 webview 不适用于流。

      从路径加载数据的方法似乎是本机实现的,不可能覆盖任何东西。

      无法解压缩,因为您无法删除 zip 文件。应用程序会注意到它并开始重新下载它,所以无论如何你都需要保留它。

      唯一的解决方案是编写自己的更新程序,直接下载内容并解压缩

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-14
        • 2017-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-20
        相关资源
        最近更新 更多