Android WebView未加载移动站点
我的应用程序显示RSS源中的文章列表,当选择其中一个时,它会在web视图中显示文章。问题是web视图显示的是桌面站点而不是移动版本,我似乎不明白为什么 网络视图代码:Android WebView未加载移动站点,android,webview,android-webview,Android,Webview,Android Webview,我的应用程序显示RSS源中的文章列表,当选择其中一个时,它会在web视图中显示文章。问题是web视图显示的是桌面站点而不是移动版本,我似乎不明白为什么 网络视图代码: package com.kentuckyfarmbureau.kyfb; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import andro
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;
}
});
}
}
正如@WarrenFaith在评论中指出的,这可能是因为您正在使用自定义用户代理字符串进行设置
web.getSettings().setUserAgentString("Android");
请不要设置此选项,或确保您的Web服务器配置为在收到用户代理作为Android的请求时服务于该站点的移动版本。正如@WarrenFaith在评论中指出的,这可能是因为您正在使用自定义用户代理字符串进行设置
web.getSettings().setUserAgentString("Android");
不要设置此选项,也不要确保您的Web服务器配置为在收到用户代理作为Android的请求时为该站点的移动版本提供服务。您只需包含以下代码行,它就能完美地加载移动站点
webView.setInitialScale(1);
webView.getSettings().setJavaScriptEnabled(true);
你只需要做包括以下代码行,它将加载移动网站完美
webView.setInitialScale(1);
webView.getSettings().setJavaScriptEnabled(true);
在搜索了很多之后,这对我很有用-
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);
在搜索了很多之后,这对我很有用-
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);
将setUseWideViewPort设置为false解决了我的问题:
mWebView.getSettings().setUseWideViewPort(false);
将setUseWideViewPort设置为false解决了我的问题:
mWebView.getSettings().setUseWideViewPort(false);
为什么要覆盖用户代理而不是添加android?无论如何,我不会修改用户代理…你确定这不是web服务器客户端检测的问题吗?可能重复为什么你要覆盖用户代理而不是添加android?无论如何,我不会修改用户代理…您确定这不是web服务器客户端检测的问题吗?webView.getSettings.SetUserAgentStringDroid可能重复;webView.getSettings.SetUserAgentStringDroid;