Setting WebView to view Desktop Site and Not Mobile Site

The question:

I’ve done quite a lot of research on Stack Overflow and a lot of Google research but nothing I find is actually working out for me. I want the site to view the desktop site instead of the mobile site. How do I do this? I want it to directly go to the Desktop site.

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

The Solutions:

Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.

Method 1

Change the user agent of webview

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

like

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

Method 2

This method helps you to set DesktopMode on 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();
}

Call it like that

Mobile mode : setDesktopMode(webView, false);

Desktop mode : setDesktopMode(webView, true);

For Kotlin:

fun setDesktopMode(webView: WebView, enabled: Boolean) {
    var newUserAgent: String? = webView.settings.userAgentString
    if (enabled) {
        try {
            val ua: String = webView.settings.userAgentString
            val androidOSString: String = webView.settings.userAgentString.substring(
                ua.indexOf("("),
                ua.indexOf(")") + 1
            )
            newUserAgent = webView.settings.userAgentString.replace(androidOSString, "(X11; Linux x86_64)")
        } catch (e: Exception) {
            e.printStackTrace()
        }
    } else {
        newUserAgent = null
    }
    webView.settings.apply {
        userAgentString = newUserAgent
        useWideViewPort = enabled
        loadWithOverviewMode = enabled
    }
    webView.reload()
}

Method 3

You can use WebView to show view as Desktop Site with fit in mobile display.

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

Method 4

The only solution which worked for me (javascript will be executed many times, but this is the only working solution for now)

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

You can set desktop UA string too

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

Method 5

Some sites don’t use User Agent to determine if then have to show the mobile or the desktop version of the Page.
Some pages uses screen size to do this.

I build an app to use a page in desktop mode, but it doesn’t work properly. Always show the mobile version because the page uses screen size and not User Agent String.

Method 6

A little update to accepted answer.This is the new string. Wrote this because someone had an issue of “Update Browser” in the comments.

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

Method 7

If you have update browser error you can try this to set apple safari UA or replace UA with Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
This worked 100% for me.

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");

Method 8

You need to change the user agent : http://developer.android.com/reference/android/webkit/WebSettings.html#setUserAgentString(java.lang.String)

Here is an example :
Loading html data in WebView

Method 9

After long search this worked for me –

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

Method 10

Try with this

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

Method 11

This worked for me

    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setLoadsImagesAutomatically(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setBuiltInZoomControls(true);

    webView.loadUrl("https://web.whatsapp.com/");

    String userAgent = webView.getSettings().getUserAgentString();

    try {
        String androidString = webView.getSettings().getUserAgentString().
                substring(userAgent.indexOf("("),userAgent.indexOf(")")+ 1);

        userAgent = webView.getSettings().getUserAgentString().replace(androidString,"X11; Linux x86_64");

    }catch (Exception e){
        e.printStackTrace();
    }

    webView.getSettings().setUserAgentString(userAgent);
    webView.reload();


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Comment