1

ジンジャーブレッドの WebViewClient にバグがあるようです。ヘッダーをリダイレクトとリロードに戻すには、メソッド boolean shouldOverrideUrlLoading(WebView view, String url) に依存しています。

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
     if (url.startsWith(URL.BASE_URL)) {
         view.loadUrl(url, RestClient.defaultHeaders);  
     }else {
         onExternalBrowserURL(url);
     }
    return true;
}

2.2 では、shouldOverrideUrlLoading は常に呼び出されるわけではなく、Android サイトの読み込みではなくモバイル Web サイトで呼び出されます。

ここにリストされているバグがあります http://code.google.com/p/android/issues/detail?id=15612 ここを参照してください 2013年は最後のコメントです:( http://code.google.com/p/android/issues /詳細?id=2887

すべての URL をカスタム URL スキームまたはプロトコルに変更する必要のない解決策を持っている人はいますか?

ありがとう

4

2 に答える 2

1

shouldOverrideUrlLoading は呼び出されるだけです ( API ガイドから取得) 。

新しい URL が現在の WebView にロードされようとしているとき

つまり、http://www.google.comを WebView にロードしてから再度ロードすると、2 回目の shouldOverrideUrlLoading は起動しません。HttpRequest などを使用して Web ページを自分でダウンロードしない限り、すべての要求にカスタム ヘッダーを追加する方法がないため、面倒です。

彼らが shouldOverrideUrlLoading を主に設計したのは、WebView ユーザーが youtube などのサイトへの最初のリクエストをインターセプトし、ユーザーをブラウザーを使用する代わりにアプリに誘導できるようにするためだと思います。悲しいことに、ヘッダーを追加するために使用するように設計されていません。

私はそれを使用して DO NOT TRACK ヘッダーをリクエストに追加することをしばらく実験しましたが、上記の理由で毎回ヘッダーを送信しないことに加えて、loadUrl(url, header) メソッドはヘッダーを正しい場所に配置していませんでした。サイトは DNT ヘッダーを認識していませんでした。

tldr: いいえ

于 2013-07-29T16:23:40.637 に答える