我正在开发一个示例应用,可以将简单的html数据加载到webview中而不会扭曲内容。在我的Activity中,我使用org.apache.http包连接到一个网站,并在私有方法openGoogleHomePage()中检索它的内容。
DefaultHttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet("http://www.google.com");
get.setHeader("Content-Type", "application/x-www-form-urlencoded");
get.setHeader("User-Agent","Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17");
HttpResponse response = client.execute(get);
String data = new BasicResponseHandler().handleResponse(response);
data = data.replaceAll("%", "%");
return data;
当我在firefox浏览器上打开http://www.google.com时将“数据”与实际的html内容响应进行比较时,内容是相同的。但是,当我尝试将此“数据”加载到webview中时,我看不到类似的内容。
LinearLayout layout = (LinearLayout) View.inflate(this, R.layout.main, null);
setContentView(layout);
WebView browser = (WebView) layout.findViewById(R.id.webPage);
browserSettings = browser.getSettings();
browserSettings.setJavaScriptCanOpenWindowsAutomatically(true);
browserSettings.setJavaScriptEnabled(true);
browserSettings.setSavePassword(false);
browserSettings.setSaveFormData(false);
browserSettings.setSupportZoom(false);
browser.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
String htmlData = openGoogleHomePage();
if (htmlData != null) {
browser.loadData(htmlData, "text/html", HTTP.UTF_8);
}
Whatelse我是否必须更改我的代码才能在Webview中查看与在PC上的浏览器中完全相同的内容?另一方面,没有经历使用http包调用URL的艰苦过程,而是使用webview.loadUrl(“http://www.gooogle.com”)从webview调用url,当然,检索搜索巨人页面的移动版本,这与PC浏览器版本不同。
简而言之,我希望在我的webview中看到我在本机自定义代码中处理http调用后在PC浏览器上看到的内容。
此外,如果有人可以在处理网址重定向时显示一些指示,那将会有很大帮助。
答案 0 :(得分:1)
某些移动设备检测可能基于用户代理。 尝试通过在WebView中添加一个设置来在WebView中设置UserAgent以使用Desktop对应项。
browserSettings.setUserAgentString("Mozilla/5.0");