この質問が何度か聞かれたことは知っていますが、まだ明確な答えはありません。あなたの考えを教えてください。
要件:- アプリケーションは、「ホワイトリストに登録された」URL のみを表示およびアクセスできるブラウザです。たとえば、Yahoo.com はホワイトリストに登録されていますが、Youtube は登録されていません。Yahoo の Web ページに Youtube ビデオが埋め込まれている場合があります。この場合、ブラウザで埋め込みビデオをまったく表示しないようにします。つまり、Webview の一部をブロックします。
調査結果:-
1) 2 つの方法があります。1 つはshouldOverrideUrlLoading()
オーバーライドして、リンクを開くかどうかを決定する方法です。2 つ目は shouldInterceptRequest()
[上記の 3.0] で、こちらのようにページのコンテンツをオーバーライドして変更できます。ただし、Web ページの個々のコンテンツを変更する場合は役に立ちません。
onLoadResource()
ロードされる各リソースに対して呼び出されるメソッドですが、それをオーバーライドしてカスタム コンテンツを表示することはできません。ロードされる内容を変更できれば、onLoadResource に似たものが完璧なソリューションでした。(セキュリティ上の問題の可能性があります)
2) HTML コンテンツを変更する :- HTTPClient を使用してページ コンテンツをダウンロードし、それを Webview にロードする方法はいくつかあります。ここでの方法は、HTML を変更して、ブロックされたコンテンツを「サイトがブロックされました」メッセージに置き換えることです。ここでの問題は、その方法が完全な証明であるかどうかです。ここでJavaScriptに問題がありますか?
3) Javascript を使用してページの内容を変更します。(何か例はありますか?) 私はこれを見ました。ブラックリストに登録された URL を含むタグを置換/削除するために参照できる例は他にありますか?
4) 私が求めていることを行うことはできません。