I am trying to load a blog powered by Wordpress on Android WebView. While the content and the 'title' images are getting displayed, the images that are inside the posts (I mean opening a post from the displayed webpage) aren't getting displayed (all the text and even the ads are getting displayed). Viewing just the website on the web browser doesn't show such issues. I have tried the methods suggested in various other questions asked on this community regarding similar issues but failed to solve my problem.
Here is the code
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);
}
}
}