WebView - запрашивая сайт рабочего стола всегда перенаправить на мобильный сайт - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь загрузить настольный веб-сайт в 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 голосов
/ 07 июня 2018

Да, для этого вам нужно добавить и установить UserAgentString в настройки WebView.

Для этого я создал один метод, с помощью которого мы можем включать и отключать представление рабочего стола в WebView.

Вызовите этот метод, передав WebView и логическое значение true, если вы хотите установить представление рабочего стола в вашем WebView.

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();
}
0 голосов
/ 07 июня 2018
String newUA= "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) 
Gecko/20100101 Firefox/4.0";
mWebView.getSettings().setUserAgentString(newUA);

Попробуйте, может быть, это решит вашу проблему.

...