2

私たちのアプリには、アセット ディレクトリから webview に読み込まれる html ページがあります。これらは、同じ場所から順番に jpg 画像をロードします。Google Play の 50mg のアプリ サイズ制限により、jpg を拡張ファイルに移動する必要があります。セキュリティ上の理由から、html ページを移動したくありません。拡張ファイルから jpg を html Web ページにロードする方法を誰か教えてもらえますか?

ありがとう

クリスティーン

さらにいくつかの考え:

このリンクは同様の質問を投稿していますが、未回答のままです:

Android WebView で apk 拡張ファイルの画像を使用する

このリンクには回答がありますが、少なくとも私のニーズでは不完全なようです:

APKメイン拡張ファイルの画像をどのように使用できますか?

拡張ファイルへの URI インターフェイス (APEZProvider は ExpansionFile の ContentProvider を作成します。http://developer.android.com/guide/google/play/expansion-files.html#ZipLibを参照してください) が、行きますが、Javascriptに情報を取得する方法がわかりません。現在、以下を使用しています。

webview shouldinterceptrequest example で提案されているように、ShouldInterceptRequest をオーバーライドしようとしまし が、画像がロードされようとしているときにコールバックを取得することを期待して、URL を変更できるようにしましたが、shouldInterceptRequest は呼び出されません。

では、jpg の読み込みを傍受し、拡張ファイルの ContentProvider から取得した URL に URL をリダイレクトする方法を知っている人はいますか?

拡張ファイルの解凍以外に何か提案はありますか? どんな助けでも大歓迎です。私は今これを研究するのに数日を費やしました

4

3 に答える 3

4

これに苦労している他の人の利益のために、少なくともAPI 11以降の解決策があります. 私は、webview.loadUrl(assetFile) がアセット フォルダーでファイルを見つけられない場合にのみ、実際に ShouldInterceptRequest が呼び出されることを発見しました。おそらくこれは明らかなはずですが、どこにも文書化されているのを見たことがありません(ファイルを削除しようとしたと思っていましたが、何か間違ったことをしたに違いありません) n shouldInterceptRequest は次のようになります。

    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, String url)
    {
        String fileName = url.substring(assetPrefix.length());

        InputStream inputStream = expansionFile.getInputStream(fileName);

        if (url.endsWith("jpg") || url.endsWith("png"))
            return new WebResourceResponse("image/*", "base64", inputStream);

        return super.shouldInterceptRequest(view, url);
    }

誰かがAPI 10のソリューションについてアイデアを持っていれば、それはまだありがたいです. shouldOverrideUrlLoading をオーバーライドする提案を見てきましたが (これは他の目的で行っています)、画像が html ファイルから読み込まれたときに呼び出されないようで、まったく新しい Web ページに進むときにのみ呼び出されます。

于 2012-10-30T15:45:46.130 に答える
0

バイト配列に格納された画像を WebView にロードする方法に対する最初の回答は? API 10で動作します。Qorbaniに感謝します! 申し訳ありませんが、私には評判がないため、あなたの回答に賛成できません

クリスティーン

于 2012-11-13T19:52:56.860 に答える