Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用WebView.loadUrl(字符串)加载存储在zip扩展文件中的png文件_Webview_Zip_Png_Apk Expansion Files - Fatal编程技术网

使用WebView.loadUrl(字符串)加载存储在zip扩展文件中的png文件

使用WebView.loadUrl(字符串)加载存储在zip扩展文件中的png文件,webview,zip,png,apk-expansion-files,Webview,Zip,Png,Apk Expansion Files,我试图使用WebView.loadUrl(字符串)显示一个png文件,其中png文件存储在Android中的zip APK扩展文件中。扩展文件的路径为: Environment.getExternalStorageDirectory()+"/Android/obb/com.example.myapp/main.1.com.example.myapp.obb"; 因此,我使用以下命令来显示文件mypicture.png String url = "jar:file:/" + Environmen

我试图使用WebView.loadUrl(字符串)显示一个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);
我在链接中得到错误网页不可用

罐子:file://storage/sdcard0/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);
我知道我的扩展文件在那里并且包含png文件,因为我有一些测试代码来从扩展文件中提取png文件。当我指向提取的png文件外部时,wv.loadUrl(提取的\u png\u位置)会正确显示png。我只是无法让它显示压缩扩展文件中的png文件


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

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

使用google的Zip库是没有选择的,因为它只返回流,而webview不处理流

从路径加载数据的方法似乎是本机实现的,不可能重写任何内容

解压是没有选择的,因为你不能删除压缩文件。应用程序会注意到它并开始重新下载,所以你无论如何都需要保留它


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

这是一个很好的替代方法,可以使用工具打包扩展文件并装载它。之后,扩展文件中的文件应该可以作为文件系统中的常规文件进行访问。在这种情况下,不需要解压缩扩展文件