我正在尝试在我的网络视图中打开一个TripAdvisor网址,这样用户就可以轻松评价我的客户酒店。
所以我做的是打开手机Chrome应用中的TripAdvisor网站,复制URL,然后在网页视图loadUrl方法中使用它。
但似乎网络视图的调用与Chrome不同,我的猜测是没有告诉服务器这是“Chrome浏览器”。
因此,如果我在Chrome中直接点击超链接打开页面,例如在电子邮件中点击了此页面:
这正是我期待的行为。
但如果我在网络视图中调用相同的网址,我就会看到此页:
现在我只使用这段代码来保持干净:
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的那个,也没有令人满意的结果。
我认为这个没有好的答案。
答案 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);
这里有一些屏幕截图,结果如下:
<强>机器人强>
<强>的iOS 强>
快乐的编码并感谢您的帮助。