Android - WebView不显示移动版网站

时间:2015-11-01 23:19:02

标签: android mobile webview

我正在将一个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());

2 个答案:

答案 0 :(得分:0)

您可以改为使用getDefaultUserAgent(Context context)或getUserAgentString()吗?我认为这可以工作而不是硬编码,也许解决了设备兼容性问题。

更多信息http://developer.android.com/reference/android/webkit/WebSettings.html#getDefaultUserAgent(android.content.Context)

答案 1 :(得分:0)

我遇到了同样的问题。当我在设置webViewClient时覆盖shouldOverrideUrlLoading时解决了我的问题:

webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }