我正在将一个URL加载到Android WebView中。我正在加载的网站由第三方提供(它在我无法控制的范围内)。 该URL是一个网站,如果它检测到它正在移动设备上加载,则会显示该网站的移动版本。 该站点使用以下代码在Nexus 5仿真器上显示移动版本,但在真实设备(Samsung Galaxy S3)上,不显示移动版本。有趣的是,如果我在设备上使用Chrome浏览器查看相同的网址,则可以正常使用。
package com.mydomain.mypackage;
import android.support.v7.app.AppCompatActivity;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView myView = (WebView)findViewById(R.id.webview);
myView.setWebViewClient(new WebViewClient());
myView.getSettings().setJavaScriptEnabled(true);
//works for emulator
String userAgent = "Mozilla/5.0 (Linux; Android 6.0; Android SDK built for x86 Build/MASTER; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/44.0.2403.119 Mobile Safari/537.36";
myView.getSettings().setUserAgentString(userAgent);
myView.loadUrl("http://myurl.com/myHomePage");
}
}
这对我没有意义。我希望网站使用用户代理字符串来检测URL是否正在移动设备上加载。由于我已经硬编码了,我希望它能在我的三星S3上显示移动网站。有什么想法正在发生或我如何才能使这个工作?
更新:添加此功能无效:
myView.setWebChromeClient(new WebChromeClient());
答案 0 :(得分:0)
您可以改为使用getDefaultUserAgent(Context context)或getUserAgentString()吗?我认为这可以工作而不是硬编码,也许解决了设备兼容性问题。
答案 1 :(得分:0)
我遇到了同样的问题。当我在设置webViewClient时覆盖shouldOverrideUrlLoading时解决了我的问题:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}