为什么某些页面没有加载到我的WebView中(但似乎在Chrome中运行良好)?例如:
我已将我的WebView设置为启用JS。这是我的WebView初始化代码:
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);
webView.getSettings().setDomStorageEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
progressBar.setProgress(progress);
if (progress == 100) {
progressBar.setVisibility(View.GONE);
}
else {
progressBar.setVisibility(View.VISIBLE);
}
}
});
webView.loadUrl(url);
答案 0 :(得分:0)
我的项目中有一个非常相似的webview代码,我只是替换了你提供的网址。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_agreement);
WebView webView = (WebView) findViewById(R.id.userAgreementView);
final ProgressWheel progressWheel = (ProgressWheel) findViewById(R.id.progress_bar);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);
webView.getSettings().setDomStorageEnabled(true);
//webView.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
Log.v("UA", webView.getSettings().getUserAgentString());
String url = getIntent().getStringExtra("data"); //Urls provided by other activity
if (url != null && !url.equals("")) {
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
//progress wheel fills here etc.
// ...
// ...
}
}
});
webView.loadUrl(url);
}
}
http://onlinelibrary.wiley.com/doi/10.1002/art.39115/pdf这个像webview中的魅力一样加载,没有毛刺,也没有错误的行为。
然后我尝试了这个http://www.ajpmonline.org/article/S0749-3797(14)00628-X/fulltext,当webview完成加载后,立即启动新的本机Chrome活动,并在单独的活动中加载页面的移动版本。
我使用桌面Chrome检查了网站的行为,当我使用Android用户代理字符串发出http请求时,结果表明这样做了。
然后我决定将用户代理字符串模仿为桌面浏览器。我从http://www.useragentstring.com/pages/Chrome/中选择了一个UA字符串,并在loadUrl方法和voilà之前将其设置为这样!
webView.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
Log.v("UA", webView.getSettings().getUserAgentString());
这可能是边缘情况,根据您加载的URL行为可能会发生变化,但您可以强制使用适当的用户代理字符串加载桌面版本的网站。
答案 1 :(得分:0)
我正在使用此代码:
WebSettings settings = webView.getSettings();
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
settings.setJavaScriptEnabled(true);
settings.setAppCacheEnabled(false);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
settings.setDatabaseEnabled(false);
settings.setDomStorageEnabled(false);
settings.setGeolocationEnabled(false);
settings.setSaveFormData(false);
希望它可以帮到你。
答案 2 :(得分:0)
我环顾四周,首先找到这个网址:http://www.ajpmonline.org/article/S0749-3797(14)00628-X/fulltext似乎他们正在使用' jwplayer'我认为,既然WebView没有处理它,它就会推出真正的'网页浏览器。
此代码适用于上面的网址:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().contains("secure.jbs") || Uri.parse(url).getHost().contains("ajpmonline"))
return false;
Log.d("MYWEBVIEWCLIENT", "This url couldn't not be handled by the webclient : " + Uri.parse(url).getHost());
return true;
}
}
我同意这不是最好的方法。我不知道您的webView的目的,如果您已经知道将加载到其中的网址,您可以实现自定义WebViewClient。
答案 3 :(得分:0)
对我来说这是一个愚蠢的事情,网络视图的高度是wrap_content 应该是match_parent