Android的web视图不加载移动网站视图、加载、网站、Android

由网友(蔻丹。)分享简介:我的应用程序显示来自RSS源的文章列表,并在选中一个它显示Web视图的文章。问题是,在网络视图显示桌面网站而不是移动版本,我似乎无法找出原因。的WebView code: 包com.kentuckyfarmbureau.kyfb;进口android.app.Activity;进口android.content.Inte...

我的应用程序显示来自RSS源的文章列表,并在选中一个它显示Web视图的文章。问题是,在网络视图显示桌面网站而不是移动版本,我似乎无法找出原因。

的WebView code:

 包com.kentuckyfarmbureau.kyfb;进口android.app.Activity;进口android.content.Intent;进口android.graphics.Bitmap;进口android.net.Uri;进口android.os.Bundle;进口android.view.View;进口android.view.View.OnClickListener;进口android.webkit.WebChromeClient;进口android.webkit.WebSettings;进口android.webkit.WebView;进口android.webkit.WebViewClient;进口android.webkit.WebSettings.RenderPriority;进口android.widget.Button;进口android.widget.ImageButton;进口android.widget.ProgressBar;进口android.widget.Toast;公共类web浏览器扩展活动{    的WebView网络;    进度prgPageLoading;    的ImageButton btnBack,btnForward;    按钮btnShare;    串myURL;    / **当第一次创建活动调用。 * /    @覆盖    公共无效的onCreate(捆绑savedInstanceState){        super.onCreate(savedInstanceState);        的setContentView(R.layout.webbrowser);        意向书的iget = getIntent();        myURL = iGet.getStringExtra(myURL);        网页=(的WebView)findViewById(R.id.web);        prgPageLoading =(进度)findViewById(R.id.prgPageLoading);        btnBack =(的ImageButton)findViewById(R.id.btnBack);        btnForward =(的ImageButton)findViewById(R.id.btnForward);        btnShare =(按钮)findViewById(R.id.btnShare);        web.getSettings()setDomStorageEnabled(真)。        web.getSettings()setJavaScriptEnabled(真)。        。web.getSettings()setSupportZoom(真);        。web.getSettings()setBuiltInZoomControls(假);        web.getSettings()setUserAgentString(机器人);        web.getSettings()setRenderPriority(RenderPriority.HIGH)。        。web.getSettings()setCacheMode(WebSettings.LOAD_NO_CACHE);        web.loadUrl(myURL);        btnShare.setOnClickListener(新View.OnClickListener(){            // @覆盖            公共无效的onClick(查看为arg0){                // TODO自动生成方法存根                串WEBURL = web.getUrl();                串webTitle = web.getTitle();                最后弦乐P0 =KYFB分享:                最后弦乐P1 =肯塔基州农场局;                最后弦乐P2 =大开的承诺。'                意图emailIntent =新意图(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,送你的电子邮件:));            }        });        btnBack.setOnClickListener(新OnClickListener(){            公共无效的onClick(查看为arg0){                // TODO自动生成方法存根                如果(web.canGoBack()){                    web.goBack();                }其他                    完();            }        });        btnForward.setOnClickListener(新OnClickListener(){            公共无效的onClick(视图v){                // TODO自动生成方法存根                如果(web.canGoForward()){                    web.goForward();                }            }        });        最终活动的行为=这一点;        web.setWebChromeClient(新WebChromeClient(){            公共无效onProgressChanged(的WebView的WebView,诠释进度){                act.setProgress(进度* 100);                prgPageLoading.setProgress(进度);            }        });        web.setWebViewClient(新WebViewClient(){            @覆盖            公共无效onPageStarted(的WebView视图,字符串URL,位图图标){                super.onPageStarted(网页,网址,图标);                prgPageLoading.setVisibility(View.VISIBLE);            }            @覆盖            公共无效onPageFinished(的WebView视图,字符串URL){                super.onPageFinished(网页,网址);                prgPageLoading.setProgress(0);                prgPageLoading.setVisibility(View.GONE);            }            公共无效onReceivedError(的WebView观点,诠释错误code,描述字符串,字符串failingUrl){                 Toast.makeText(行为,描述,Toast.LENGTH_SHORT).show();               }            公共布尔shouldOverrideUrlLoading(的WebView视图,字符串URL)            {                如果(url.endsWith(MP4)|| url.endsWith(。3GP)|| url.endsWith(AVI)){                    意图I =新意图(Intent.ACTION_VIEW);                    i.setData(Uri.parse(URL));                    startActivity(ⅰ); //警告没有错误处理将导致强制关闭,如果手机上没有媒体播放器。                    返回true;                }                view.loadUrl(URL);                返回true;            }            });    }} 

解决方案

由于@WarrenFaith在评论中指出,这可能是因为你与

设置自定义用户代理字符串的发生

  web.getSettings()setUserAgentString(机器人); 

请不要设置或确保您的Web服务器配置时,它接收到的用户代理为Android的。

请求服务网站的移动版本Android Pay将登陆移动网页端 搭十次Uber获50 优惠

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 + "nn" + webUrl + "nnn" +
                   p1 + "n" + p2 +  "nn");

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



    }



}

解决方案

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".

阅读全文

相关推荐

最新文章