2017-06-27 62 views
1

Android WebViewにWordpressを搭載したブログを読み込もうとしています。コンテンツと 'タイトル'画像が表示されている間、投稿内の画像(表示されたウェブページから投稿を開くことを意味する)は表示されません(すべてのテキストと広告さえも表示されます)。 Webブラウザで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のバージョンが何であるかを求めることができますか?

EDIT

This is what you want?

This is what also get

UPDATE_SHOULDURLOVERRIDING

そして、これはちょうどそれがそれを制御しWebViewの中でURLを開く他の何かを行いますコードの一部でありますmailtoのようなものから始まります.... 私meantoでmailto: HTMLでこれを行うことができます:[email protected]とあなたのPC上であなたの見通しを開きます。あなたがアンドロイドを持っていて、そのコードがそこになければ、それはエラーを起こすでしょう。そのコードを持っていれば、それを開く必要があるかどうかを尋ねるでしょう。

EDIT この方法で読み込むと機能しますか?

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

こんにちは@Steven:代わりの

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

。 SDKの最小バージョンはSDK 19です(Android 4.4と思います)。スクリーンショットに関しては、私はそれを実際に言及していませんでした。おそらく、私は質問でそれを正しく説明できませんでした。ちなみに、あなたが 'shouldOverrideUrlLoading 'の' if'ステートメント内の行を説明することもできましたか? '平均? –

+0

アップデートと編集を参照してください – Steven

+0

' shouldOverrideUrlLoading'のビットを説明してくれてありがとう、screenshots(edit)については、私はこれを参考にしていました。しかし何らかの理由でウェブビューに表示されません。 –

関連する問題