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);
}
を:あなただけのコードに次の行を追加すること達成であるWebViewの
にWebViewClientを添付する必要があり、navitageためにあなたのカスタマイズブラウザを使用するには それを "webView.setWebViewClient(new WebViewClient()....."という行でやっています – damcify