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