1

次のようなwebviewのloadDataWithBaseURLメソッドに渡すいくつかのimgタグを含むhtml文字列があります

String data = "some html with <img> and <link>.....";
wview.loadDataWithBaseURL("http://dummy.baseurl/", data, "text/html", "UTF-8", null);

最初のパラメーターを渡さない場合、html は表示できますが、後続の要求または css ファイルはトリガーされません。そのため、ダミーの baseUrl を渡しています。

以下のようにshouldInterceptRequest () の下で行われたリクエストを確認しようとすると、コードを実行します

wview.setWebViewClient(new WebViewClient() {

    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view,
                        String url) {
            Log.d("url="+url, "resources");
            ....

        }
});

次のような出力が表示されます

http://dummy.host.name/images/face.jpg など

しかし、私の元のhtmlにはimg srcに「..」が含まれてい<img src="../images/face.jpg">ます

この「..」は私にとって重要ですなぜその部分をスキップしているのかわかりません

編集

zip ファイルから画像をロードしているので、shouldInterceptRequest() 内に必要なロジックを配置できますが、最初に正しい src が必要です。

また、パスがbaseUrlに追加されている場合、それらも無視されることに気付きました。

http://dummy.baseUrl/one/two/

になります(リクエストログから見て)

http://dummy.baseurl/

この 2 つに関連性があると思われます。

4

2 に答える 2