2012-11-09 9 views
5

AndroidアプリケーションのHTTPリクエストでUser-Agent文字列を変更しようとしました。私はこれをwiresharkとエミュレータと一緒にテストしましたが、webviewでuseragent文字列を設定しましたが、関連するloadUrlリクエストはこのuser-agent文字列を使用しないことがわかりました。代わりに、私はwiresharkのキャプチャでDalvikのユーザーエージェントの文字列を参照します。 ここにコードアブストラクトがあります。何か案は?または、エミュレータはこれをサポートしていませんか?Android webviewのsetUserAgentStringは、loadURL()で使用されるHTTPヘッダーには影響しません。

@Override 
public void run() { 
    assert(context != null); 

    ... 
    ... 
    webView = new WebView(context); 
    ... 
    String defaultUserAgent = "betaUAteststring"; 


    // Clear per-application caches etc 
    webView.clearCache(true); 
    webView.clearHistory(); 
    webView.getSettings().setAppCacheEnabled(false); 
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
    webView.getSettings().setJavaScriptEnabled(true); 


    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) { 
     .... 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     .. 
     } 

     @Override 
     public void onLoadResource(WebView view, String url) { 
     ... 
     } 
    }); 


    // Start loading 


    webView.getSettings().setUserAgentString(defaultUserAgent); 
    String setUA = webView.getSettings().getUserAgentString(); 
    //--> logging here shows the correct user agent, so the webview does accept the value 
    // However the following statement does not result in an http request with the webviews user agent 
    webView.loadUrl(url); 

    //Alternative doesn't help either (and shouldn't according to javadoc) 

    //Map<String,String> headerMap = new HashMap<String,String>(); 
    //headerMap.put("User-Agent","uaTestInAMap");   
    //webView.loadUrl(url, headerMap); 
} 

答えて

1

自分の質問に答える。何らかの理由でエミュレータがWebビューからユーザエージェント文字列を取得していないようです。私はしかし、これの理由を発見していない。 コードは実際のデバイスで正常に動作します。

0

オープンURLでデフォルトのAndroidの動作を上書きしないでください(デフォルトブラウザを起動します)。

webView.setWebViewClient(new WebViewClient()); 

私は私と信じて乾杯、 ロドリゴ

+0

を:あなただけのコードに次の行を追加すること達成であるWebViewの

にWebViewClientを添付する必要があり、navitageためにあなたのカスタマイズブラウザを使用するには それを "webView.setWebViewClient(new WebViewClient()....."という行でやっています – damcify

関連する問題