2017-06-27 67 views
1

我正尝试在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); 
     } 
    } 
} 

回答

0

您好我试着用我的代码,你的链接。我可以看到图像:see the photo。这是你想要的吗?

然后是我的mainAcitivity:

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 


public class MainActivity extends Activity { 

    private WebView view; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     view = (WebView) this.findViewById(R.id.webView); 
     view.getSettings().setJavaScriptEnabled(true); 
     view.getSettings().setDomStorageEnabled(true); 
     view.setWebViewClient(new MyBrowser()); 
     view.loadUrl("file:///android_asset/www/index.html"); //try js alert 
     view.setWebChromeClient(new WebChromeClient()); // adding js alert support 

    } 
    private class MyBrowser extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url.startsWith("mailto:") || url.startsWith("mms:") || url.startsWith("mmsto:") || url.startsWith("market:")) { 
       Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
       startActivity(intent); 
       return true; 
      } 
      else { 
       view.loadUrl(url); 
       return true; 
      } 
     } 
    } 

    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && view.canGoBack()) { 
      view.goBack(); //method goback() 
      return true; 
     } 

     return super.onKeyDown(keyCode, event); 
    } 
} 

也可以问什么是最小的SDK版本?

编辑

This is what you want?

This is what also get

UPDATE_SHOULDURLOVERRIDING

这是一段代码,会做别的事情,然后就在网页视图中打开URL它控制它是开始与东西像mailto .... 我什么意思与mailto: 在HTML中,你可以这样做:[email protected]和在你的电脑上它会打开你的前景。如果你有android并且那段代码不在那里,它会给出错误。如果你有这段代码,它会问这个mailserivce我需要打开它。

编辑 所以,如果你通过这种方法加载它的作品?

@Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 

代替:

 view.loadUrl("file:///android_asset/www/index.html"); //try js alert 
+0

嗨@Steven。最低SDK版本是SDK 19(我认为是Android 4.4)。至于截图,我并没有真正指这一点。但也许我没有在问题中正确解释它。试着打开“Health Kart Affiliates”提到的帖子,我指的是当我打开该帖子时应该看到的图片。 顺便说一下,您是否还可以解释“shouldOverrideUrlLoading中'if语句中的那些行'是什么意思? –

+0

查看更新和编辑 – Steven

+0

非常感谢您解释'shouldOverrideUrlLoading'中的那一点,以及截图(编辑),是的,我指的是这个,您可以在Web浏览器中看到帖子中的嵌入图像但由于某种原因,它并没有显示在webview中 –