由网友(蔻丹。)分享简介:我的应用程序显示来自RSS源的文章列表,并在选中一个它显示Web视图的文章。问题是,在网络视图显示桌面网站而不是移动版本,我似乎无法找出原因。的WebView code: 包com.kentuckyfarmbureau.kyfb;进口android.app.Activity;进口android.content.Inte...![Android Pay将登陆移动网页端 搭十次Uber获50 优惠](https://p.xsw88.cn/allimgs/daicuo/20230906/1871.png)
我的应用程序显示来自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 优惠](https://p.xsw88.cn/allimgs/daicuo/20230906/1871.png)
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".
相关推荐
最新文章