2013-08-22 69 views
0

我的應用程序有一個列表視圖,其中包含來自RSS源的數據。當選中一行時,它會在Web視圖中顯示該文章。它會加載頁面,但不會像Chrome那樣加載完整的移動網站。我在我的應用程序的Web視圖中加載了一篇文章的屏幕截圖,並在Chrome中加入了相同的頁面。有任何想法嗎?Android WebView顯示與Chrome不同的網站

這是在Chrome: enter image description here

這是在我的網站的觀點: enter image description here

package com.example.kyfbtest; 

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.WebSettings.RenderPriority; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
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(true); 

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



    } 



} 
+0

你可以從webview渲染片張貼一些代碼嗎? – Slartibartfast

+0

我添加了代碼。 – raginggoat

+0

您確定服務器發送相同的響應,並且不會查看用戶代理字符串以將較小的版本發送到手機嗎? – Henry

回答

0

服務器檢查用戶代理頭字符串,並將頁面時的縮小版它認爲請求來自手機。

看來,這種邏輯不能正常工作。