WebView的行为与Chrome不同

时间:2015-05-25 14:53:20

标签: android google-chrome android-webview

我正在尝试在我的网络视图中打开一个TripAdvisor网址,这样用户就可以轻松评价我的客户酒店。

所以我做的是打开手机Chrome应用中的TripAdvisor网站,复制URL,然后在网页视图loadUrl方法中使用它。

但似乎网络视图的调用与Chrome不同,我的猜测是没有告诉服务器这是“Chrome浏览器”。

因此,如果我在Chrome中直接点击超链接打开页面,例如在电子邮件中点击了此页面:

enter image description here

这正是我期待的行为。

但如果我在网络视图中调用相同的网址,我就会看到此页:

enter image description here

现在我只使用这段代码来保持干净:

webview = (WebView) findViewById(R.id.webView);
webview.setWebChromeClient(new WebChromeClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl(tValue);

但是我已经尝试了所有这些,似乎没有任何迹象告诉TripAdvisor表现得像Chrome一样:

webview = (WebView) findViewById(R.id.webView);
webview.setWebViewClient(new WebViewClient());
webview.setWebChromeClient(new WebChromeClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
webview.clearCache(true);
webview.clearHistory();
webview.loadUrl(tValue); 

我在我的iOS应用程序中做的完全相同,并且UIWebView对服务器的行为或告诉与在Safari中进行的调用相同。

有没有办法更改某些标题或某些内容告诉服务器我的网络视图是“Chrome浏览器”?

提前致谢。

更新1:

感谢Dominik K的回答,我尝试了他建议的所有user agents,但仍然无效。

因此我发现两者的test the agent实际上它们是不同的,但即使使用使用Chrome的那个,也没有令人满意的结果。

我认为这个没有好的答案。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

Webview正在使用标准的Android用户代理。

这应该为你解决问题。

webview.getSettings().setUserAgentString("Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19");

有关用户代理的更多详细信息:https://developer.chrome.com/multidevice/user-agent

答案 1 :(得分:2)

我已经成功了,

感谢Dominic K的回答以及大量的测试,我发现了一个不太优雅的解决方案。

目标是在iOS设备中查看“发表评论和评分”。

所以最后我将Android WebView中的用户代理更改为使用iOS UIWebView的用户代理。

Android中的代码如下所示:

webview = (WebView) findViewById(R.id.webView);
webview.setWebChromeClient(new WebChromeClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setUserAgentString("Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.14 (KHTML, like Gecko) Mobile/12F70");
webview.loadUrl(tValue);

这里有一些屏幕截图,结果如下:

<强>机器人

enter image description here

<强>的iOS

enter image description here

快乐的编码并感谢您的帮助。