2

我正在尝试使用 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 文件时, wv.loadUrl(extracted_png_location) 正确显示 png 。我只是无法让它显示zip 扩展文件中的 png 文件

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

4

2 回答 2

1

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

于 2013-11-05T16:01:33.913 回答
0

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

使用 google 的 Zip Lib 是没有选择的,因为它只返回流,而 webview 不适用于流。

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

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

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

于 2013-09-26T09:36:23.190 回答