My app has a list view with data from an RSS feed. When a row is selected it then shows that article in a web view. It loads the page but it doesn't load the full mobile site like Chrome does. I'm putting screenshots of an article loaded in the web view of my app and the same page in Chrome. Any ideas?
Here it is in Chrome:
Here it is in my web view:
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;
}
});
}
}
The server inspects the user agent header string and sends a smaller version of the page when it thinks the request comes from a mobile phone.
It seems, this logic is not working perfectly.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.