我正尝试在Android WebView上加载由Wordpress提供支持的博客。在显示内容和“标题”图像时,帖子内的图像(我的意思是从显示的网页中打开帖子)没有得到显示(所有文字甚至广告都显示出来)。仅在Web浏览器上查看网站不会显示此类问题。我已经尝试了针对这个社区提出的有关类似问题的其他各种问题中提出的方法,但未能解决我的问题。无法在Android webview中看到帖子内的帖子
下面是代码
public class MainActivity extends AppCompatActivity {
private WebView webView;
private ProgressDialog mProgress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.cuous_web_view);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowContentAccess(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setDomStorageEnabled(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setAppCacheEnabled(true);
webSettings.setAppCachePath(this.getApplicationContext().
getCacheDir().getAbsolutePath());
webSettings.setLoadsImagesAutomatically(true);
webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
webSettings.setSupportZoom(true);
webSettings.setUserAgentString("Android WebView");
mixedContentIfRequired(webSettings);
webSettings.setBuiltInZoomControls(true);
webView.setWebViewClient(new CuousViewClient());
webView.setWebChromeClient(new CuousChromeClient());
webView.loadUrl("http://cuous.com/");
}
private void mixedContentIfRequired(WebSettings webSettings) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webSettings.setMixedContentMode(WebSettings.
MIXED_CONTENT_COMPATIBILITY_MODE);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onDestroy() {
if(mProgress != null && mProgress.isShowing())
mProgress.dismiss();
super.onDestroy();
}
private class CuousChromeClient extends WebChromeClient {
@Override
public void onProgressChanged(WebView view, int progress) {
if (mProgress == null) {
mProgress = new ProgressDialog(MainActivity.this);
mProgress.show();
mProgress.setCanceledOnTouchOutside(false);
}
mProgress.setMessage("Loading " + String.valueOf(progress) + "%");
if (progress == 100) {
mProgress.dismiss();
mProgress = null;
}
}
}
private class CuousViewClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
ActionBar actionBar = getSupportActionBar();
if(actionBar.isShowing()) {
actionBar.hide();
}
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:var footer = document.getElementById(\"footer\"); footer.parentNode.removeChild(footer);");
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
if(handler != null) {
handler.proceed();
}
else super.onReceivedSslError(view, null, error);
}
}
}
嗨@Steven。最低SDK版本是SDK 19(我认为是Android 4.4)。至于截图,我并没有真正指这一点。但也许我没有在问题中正确解释它。试着打开“Health Kart Affiliates”提到的帖子,我指的是当我打开该帖子时应该看到的图片。 顺便说一下,您是否还可以解释“shouldOverrideUrlLoading中'if语句中的那些行'是什么意思? –
查看更新和编辑 – Steven
非常感谢您解释'shouldOverrideUrlLoading'中的那一点,以及截图(编辑),是的,我指的是这个,您可以在Web浏览器中看到帖子中的嵌入图像但由于某种原因,它并没有显示在webview中 –