Android WebView Not Loading Mobile Site

12,543

Solution 1

As @WarrenFaith pointed out in comments, this might be happening because of the custom User-Agent string that you are setting with

web.getSettings().setUserAgentString("Android");

Do not set this or make sure your webserver is configured to serve the mobile version of the site when it receives request with user agent as "Android".

Solution 2

Setting setUseWideViewPort to false solved the problem for me:

mWebView.getSettings().setUseWideViewPort(false);
Share:
12,543
raginggoat
Author by

raginggoat

Updated on June 04, 2022

Comments

  • raginggoat
    raginggoat almost 2 years

    My app shows a list of articles from an RSS feed and when one is selected it shows the article in a web view. The problem is that the web view is displaying the desktop site instead of the mobile version and I can't seem to figure out why.

    WebView Code:

    package com.kentuckyfarmbureau.kyfb;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.webkit.WebChromeClient;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.webkit.WebSettings.RenderPriority;
    import android.widget.Button;
    import android.widget.ImageButton;
    import android.widget.ProgressBar;
    import android.widget.Toast;
    
    public class WebBrowser extends Activity {
        WebView web;
        ProgressBar prgPageLoading;
        ImageButton btnBack, btnForward;
        Button btnShare;
        String myURL;
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);        
            setContentView(R.layout.webbrowser);
    
            Intent iGet = getIntent();
            myURL = iGet.getStringExtra("myURL");
    
            web = (WebView) findViewById(R.id.web);
            prgPageLoading = (ProgressBar) findViewById(R.id.prgPageLoading);
            btnBack = (ImageButton) findViewById(R.id.btnBack);
            btnForward = (ImageButton) findViewById(R.id.btnForward);
            btnShare = (Button) findViewById(R.id.btnShare);
    
            web.getSettings().setDomStorageEnabled(true);
            web.getSettings().setJavaScriptEnabled(true);
            web.getSettings().setSupportZoom(true);
            web.getSettings().setBuiltInZoomControls(false);
            web.getSettings().setUserAgentString("Android");
    
            web.getSettings().setRenderPriority(RenderPriority.HIGH);
            web.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
    
            web.loadUrl(myURL);
    
            btnShare.setOnClickListener(new View.OnClickListener() {
    
                //@Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
    
    
                    String webUrl = web.getUrl();
                    String webTitle = web.getTitle();
    
                    final String p0 = "KYFB Share:";
                    final String p1 = "Kentucky Farm Bureau";
                    final String p2 = "'Big On Commitment.'";
    
    
    
                    Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
                    emailIntent.setType("text/html");
                    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, webTitle);
                    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, p0 + "\n\n" + webUrl + "\n\n\n" +
                       p1 + "\n" + p2 +  "\n\n");
    
                    startActivity(Intent.createChooser(emailIntent, "Send your email in:"));
    
                }
            });
    
            btnBack.setOnClickListener(new OnClickListener() {
    
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    if(web.canGoBack()){
                        web.goBack();
                    } else 
                        finish();
                }
            });
    
            btnForward.setOnClickListener(new OnClickListener() {
    
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    if(web.canGoForward()){
                        web.goForward();
                    }
                }
            });
    
            final Activity act = this;
            web.setWebChromeClient(new WebChromeClient(){
                public void onProgressChanged(WebView webview, int progress){
    
                    act.setProgress(progress*100);
                    prgPageLoading.setProgress(progress);
    
                }
    
    
            });
    
            web.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageStarted( WebView view, String url, Bitmap favicon ) {
    
                    super.onPageStarted( web, url, favicon );
                    prgPageLoading.setVisibility(View.VISIBLE);
                }
    
                @Override
                public void onPageFinished( WebView view, String url ) {
    
                    super.onPageFinished( web, url );
                    prgPageLoading.setProgress(0);
                    prgPageLoading.setVisibility(View.GONE);
    
                }   
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                     Toast.makeText(act, description, Toast.LENGTH_SHORT).show();
                   }
    
                public boolean shouldOverrideUrlLoading(WebView view, String url)
                {
    
                    if(url.endsWith(".mp4") || url.endsWith(".3gp") || url.endsWith(".avi")){
                        Intent i = new Intent(Intent.ACTION_VIEW);
                        i.setData(Uri.parse(url));
                        startActivity(i); //warning no error handling will cause force close if no media player on phone.
                        return true;
                    }
    
                    view.loadUrl(url);
                    return true;
                }
                });
    
    
    
        }
    
    
    
    }