2

png ファイルが Android の zip APK 拡張ファイル内に格納されている WebView.loadUrl(string) を使用して png ファイルを表示しようとしています。拡張ファイルへのパスは次のとおりです。

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);

リンクでWebページが利用できないというエラーが表示されます

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

拡張ファイルからpngファイルを抽出するためのテストコードがあるため、拡張ファイルがそこにあり、pngファイルが含まれていることを知っています。wv.loadUrl(extracted_png_location) は、抽出された png ファイルの外側をポイントすると、png を正しく表示します。zip 拡張ファイルにある png ファイルを表示することはできません。

zip ファイル内の png ファイルへのパスが間違っているのでしょうか? または、zip 内のファイルで直接 loadUrl() を使用することも可能ですか?

4

2 に答える 2

1

JOBBツールを使用して拡張ファイルをパックし、StorageManagerを使用してそれをマウントすることは、良い代替手段です。その後、拡張ファイル内のファイルは、ファイル システム内の通常のファイルとしてアクセスできるようになります。この場合、拡張ファイルの解凍は必要ありません。

于 2013-11-05T16:01:33.913 に答える
0

私はまったく同じ問題を抱えています。私の WebView コンテンツは大きすぎてアプリ内で配信できませんが、直接パスが必要なため、拡張ダウンロードからの zip には WebView 経由でアクセスできません。

Google の Zip Lib を使用することはできません。これはストリームのみを返し、webview はストリームでは機能しないためです。

パスからデータをロードするメソッドはネイティブに実装されているようで、何かをオーバーライドする可能性はありません。

zipファイルは削除できないため、解凍はできません。アプリはそれを認識して再ダウンロードを開始するため、とにかく保持する必要があります.

唯一の解決策は、コンテンツを直接ダウンロードして解凍する独自のアップデーターを作成することです

于 2013-09-26T09:36:23.190 に答える