Настройка WebView для просмотра рабочего стола, а не мобильного сайта

Я провел довольно много исследований о переполнении стека и много исследований в Google, но ничего из того, что я нашел, на самом деле не работает для меня. Я хочу, чтобы сайт отображал сайт для настольных компьютеров, а не для мобильных устройств. Как мне это сделать? Я хочу, чтобы он напрямую переходил на сайт рабочего стола.

WebView myWebView = (WebView) findViewById(R.id.webview); 
    myWebView.loadUrl("http://www.apotter96.webs.com/");
}

person user2039764    schedule 04.02.2013    source источник
comment
Не думайте, что это действительно возможно, поскольку от вас не зависит, что делает их сайт, когда замечает, что вы мобильный. Может быть, если вы узнаете, как они распознают и сохраняют его, вы сможете манипулировать им с помощью какого-нибудь javascript или чего-то еще.   -  person Stefan de Bruijn    schedule 04.02.2013
comment
Как я должен использовать javascript для этого?   -  person user2039764    schedule 04.02.2013
comment
Похоже, вы ищете способ изменить строку агента пользователя? Вы искали это, кажется, есть довольно много ресурсов, когда я гуглю.   -  person Grambot    schedule 04.02.2013
comment
Вы можете использовать setDesktopMode(true) из этой библиотеки или прочитать, как это работает реализовано .   -  person caw    schedule 30.03.2016
comment
установка myWebView.setInitialScale(100); у меня сработало, но перед myWebView.loadUrl() добавить webView.setWebViewClient(new WebViewClient());   -  person Kifayat Ullah    schedule 16.06.2019


Ответы (10)


Изменить пользовательский агент веб-просмотра

 String newUA="Foo/"; // Change this to desired UA

как

 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);
person baboo    schedule 04.02.2013
comment
Как включить Flash Player? - person user2039764; 04.02.2013
comment
попробуйте это stackoverflow .com/questions/6596243/ - person baboo; 04.02.2013
comment
Это работает нормально, но у меня есть побочный эффект из-за использования этой настройки. Веб-просмотр не уничтожается в onDestroy() действия. Я использую mWebView.destroy(); в функции onDestroy действия - person user2041902; 05.07.2013
comment
@BhanuSharma Я опубликовал свой ответ, можете проверить это и дайте мне знать - person Vignesh; 13.06.2019
comment
следите за строкой пользовательского агента, теперь она немного изменена, а также включает версию для Chrome. это может повлиять на конечный результат... посмотрите официальный сайт разработчика: developer.android.com/ руководство/webapps/migrating#UserAgent - person Muahmmad Tayyib; 25.11.2020

Вы можете использовать WebView, чтобы отобразить представление как настольный сайт с возможностью отображения на мобильном устройстве.

        webView = (WebView)findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);

        webView.getSettings().setSupportZoom(true);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setDisplayZoomControls(false);

        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webView.setScrollbarFadingEnabled(false);
person Abhijeet Sharma    schedule 16.09.2015
comment
этот параметр работал как шарм. - person bastami82; 30.10.2016

Этот метод поможет вам установить DesktopMode в веб-просмотре.

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();
}

Назовите это так

Мобильный режим: setDesktopMode(webView, false);

Режим рабочего стола: setDesktopMode(webView, true);

person Amine Harbaoui    schedule 04.08.2017
comment
Это сработало для меня - person Anand; 26.02.2021

Единственное решение, которое сработало для меня (javascript будет выполняться много раз, но пока это единственное рабочее решение)

        @Override
        public void onLoadResource(WebView view, String url) {
           view.evaluateJavascript("document.querySelector('meta[name=\"viewport\"]').setAttribute('content', 'width=1024px, initial-scale=' + (document.documentElement.clientWidth / 1024));", null);
        }

Вы также можете установить строку UA для рабочего стола

webView.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
person Sali Manaf    schedule 10.03.2020
comment
Все остальное здесь просто о пользовательском агенте, которого недостаточно для многих веб-сайтов. Это работает и для меня, спасибо, что поделились. Это должен быть принятый ответ, пока не появится что-то лучшее. - person Slion; 14.06.2020
comment
Я попробовал несколько вещей, чтобы узнать, как уменьшить первоначальный масштаб, чтобы он соответствовал размеру экрана, но ни один из них меня не удовлетворил. Похоже, я оставлю 1.0 и позволю пользователю уменьшить масштаб. - person Slion; 14.06.2020
comment
Нашел: view.evaluateJavascript(document.querySelector('meta[name=\viewport\]').setAttribute('content', 'width=1024px, initial-scale=' + (window.screen.width/1024)) ;, нулевой) - person Slion; 14.06.2020
comment
Вам также необходимо убедиться, что широкое окно просмотра включено: webView.getSettings().setUseWideViewPort(true); - person Slion; 14.06.2020
comment
@Slion спас мне ночь!! :П - person Muahmmad Tayyib; 25.11.2020

Небольшое обновление принятого ответа. Это новая строка. Написал это, потому что у кого-то была проблема «Обновить браузер» в комментариях.

String newUA= "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1";
mWebView.getSettings().setUserAgentString(newUA);
person J.Doe    schedule 16.07.2018

Если у вас есть ошибка обновления браузера, вы можете попробовать установить Apple Safari UA или заменить UA на Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0 Это сработало на 100% для меня.

webview =(WebView)findViewById(R.id.webView);
        webview.getSettings().setMinimumFontSize(12);
        webview.getSettings().setJavaScriptEnabled(true);
        webview.getSettings().setLoadWithOverviewMode(true);
        webview.getSettings().setUseWideViewPort(true);
        webview.getSettings().setSupportZoom(true);
        webview.getSettings().setBuiltInZoomControls(true);
        webview.getSettings().setDisplayZoomControls(false);
        webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webview.setScrollbarFadingEnabled(false);
        String newUA= "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Safari/602.1.50";
        webview.getSettings().setUserAgentString(newUA);
        webview.loadUrl("https://solveforum.com");
person Android Master    schedule 15.10.2018

Некоторые сайты не используют User Agent, чтобы определить, нужно ли показывать мобильную или настольную версию Страницы. На некоторых страницах для этого используется размер экрана.

Я создаю приложение для использования страницы в режиме рабочего стола, но оно работает неправильно. Всегда показывать мобильную версию, потому что на странице используется размер экрана, а не строка агента пользователя.

person TunebaGamer    schedule 31.10.2019

Вам необходимо изменить пользовательский агент: http://developer.android.com/reference/android/webkit/WebSettings.html#setUserAgentString(java.lang.String)

Вот пример:
Загрузка данных html в WebView

person EvZ    schedule 04.02.2013

После долгих поисков это сработало для меня -

    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);

    webView.getSettings().setSupportZoom(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setDisplayZoomControls(false);

    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.setScrollbarFadingEnabled(false);
person Anirban    schedule 06.06.2018

Попробуйте с этим

String ua = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36";
person Vignesh    schedule 13.06.2019