2017-06-27 72 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中 –