2

XmlHttpRequest呼び出しを使用していくつかのリソースをロードする JavaScript プラグインを統合しようとしています。このスクリプトを WebView のローカルにロードされたページ内で実行したいと考えています。すでにお察しのとおり、XmlHttpRequest呼び出しはローカル リソースに対して許可されていないため、すぐに次のエラーが発生します。

XMLHttpRequest は file:///android_asset/resources.html を読み込めません。クロス オリジン リクエストは、HTTP でのみサポートされています。

この時点で、次のように、呼び出しをインターセプトして自分でファイルをロードするだけで、Web サーバーをエミュレートできると考えました。

webView.setWebViewClient(new WebViewClient() {
    @Override
    public WebResourceResponse shouldInterceptRequest(final WebView view, String url) {
        try {
            if (url.contains("resources.html")) { //breakpoint here is not triggering
                return new WebResourceResponse("text/html", "UTF-8", getAssets().open("resources.html"));
            }
        } catch (IOException e) {
            return super.shouldInterceptRequest(view, url);
        }
        return super.shouldInterceptRequest(view, url);
    }
});

問題は、shouldInterceptRequest呼び出されていないことです。公式ドキュメントは非常に簡潔で、傍受されるリクエストのタイプは指定されていません。この記事は、メソッドがXmlHttpRequest呼び出しをインターセプトすることを暗示していますが、機能していないようです。

XmlHttpRequestshouldInterceptRequestの後に呼び出す必要があるかどうかを知っている人はいますか? そうでない場合、これを行う別の方法はありますか?ありがとう

4

2 に答える 2