WebView 的行为不像 Chrome

WebView Is not behaving like Chrome

我正在尝试在我的 Web 视图中打开 TripAdvisor URL,以便用户可以轻松地评价我的客户酒店。

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

但似乎 Web 视图发出的调用与 Chrome 不同,我的猜测是它没有告诉服务器这是 "Chrome Browser"。

因此,如果我在 Chrome 中打开页面,直接单击 Hyper Link,例如在电子邮件中,我会得到此页面:

这正是我所期望的行为。

但是如果我在 Web 视图中调用相同的 URL,我会得到这个页面:

现在我只使用这段代码来保持它的整洁:

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 中进行的调用相同。

有没有办法改变一些 header 或者告诉服务器我的网络视图是 "Chrome Browser"?

提前致谢。

更新 1:

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

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

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

网络视图使用标准 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

好吧,我做到了,

感谢 Dominic K 的回答和大量测试,我找到了一个不太优雅的解决方案。

目标是查看 "Leave a comment and rate" 与在 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);

这里有一些结果的屏幕截图:

ANDROID:

iOS

编码愉快,感谢您的帮助。