WebView - 请求桌面站点始终重定向到移动站点

时间:2018-06-07 11:43:59

标签: android webview desktop

我尝试使用自定义用户代理加载webview中的桌面网站,但该网站始终检测到我来自移动设备,因此他们将我重定向到移动网站。

我使用以下代码:

 webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setDomStorageEnabled(true);
        webView.getSettings().setSupportZoom(false);
        webView.getSettings().setBuiltInZoomControls(false);
        webView.getSettings().setDisplayZoomControls(false);

 webView.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
        webView.setWebChromeClient(new WebChromeClient());

 webView.setWebViewClient(new WebViewClient()
        {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                Log.d("WebView", "onPageStarted.." + url);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                Log.d("WebView", "onPageStarted.." + url);
                super.onPageFinished(view, url);
            }

            @Override
            public void onLoadResource(WebView view, String url) {
                // TODO Auto-generated method stub
                Log.d("WebView", "onLoadResource.." + url);
                super.onLoadResource(view, url);
            }
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                System.out.println("shouldOverrideUrlLoading :-" + url);
                return super.shouldOverrideUrlLoading(view, url);
            }
        });
        webView.loadUrl("https://xxxxxxxx.com");

2 个答案:

答案 0 :(得分:-1)

SVGTextContentElement

尝试这可能这可以解决您的问题。

答案 1 :(得分:-1)

是的,为此,您必须添加UserAgentString并将其设置为WebView设置。

为此,我创建了一个方法,我们可以从中启用和禁用WebView的桌面视图。

如果要在WebView中设置桌面视图,请通过传递WebView和布尔值true来调用此方法。

public void setDesktopMode(WebView webView,boolean enabled) {
    String newUserAgent = webView.getSettings().getUserAgentString();
    if (enabled) {
        try {
            String ua = webView.getSettings().getUserAgentString();
            String androidOSString = webView.getSettings().getUserAgentString().substring(ua.indexOf("("), ua.indexOf(")") + 1);
        newUserAgent = webView.getSettings().getUserAgentString().replace(androidOSString, "(X11; Linux x86_64)");
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        newUserAgent = null;
    }

    webView.getSettings().setUserAgentString(newUserAgent);
    webView.getSettings().setUseWideViewPort(enabled);
    webView.getSettings().setLoadWithOverviewMode(enabled);
    webView.reload();
}