いくつかの写真を含む HTML コンテンツを webview に設定したいと思います。インターネットで読んだことがありますが、画像のフォルダー(basUrl)を順番にリンクする必要があるため、loadDataWithBaseUrlを使用してそのようなことを行う必要があります。
私のhtmlコンテンツはうまくロードされ、javascriptを完全に実行することさえできますが、何らかの理由で画像をロードできません。
どこかで私が読んだところには、いくつかのセキュリティ上の理由があり、それが理由で、sd カードから webview に画像を読み込むことができず、 loadDataWithBaseUrl を介して簡単に実行できると言う人もいるので、どれが本当かわかりません。
これが私が試した私の方法です。おそらくいくつかの間違いがあるので、失礼にならないようにしてください:
ここにhtmlファイルを取得しました:
mnt/sdcard/com.mypackage.myproject/3/3.html
私の画像はここにあります:
mnt/sdcard/com.mypackage.myproject/3/images/Cover.png
そして、これは私のコンテンツの読み込みです:
myWebView.loadDataWithBaseURL("file:///mnt/sdcard/com.mypackage.myproject/3", myHtml, "text/html", "utf-8", "");
私のhtmlコードでは:
<img src="images/Cover.png" alt="Cover.png" height="820"/>
ご覧のとおり、baseUrl を指定すると、何らかの理由で webview が画像を読み込めません。
多くの人が言ったように、これは解決策になる可能性があります。
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
String base = Environment.getExternalStorageDirectory().getAbsolutePath().toString();
String imagePath = "file:/"+ base + "/test.jpg";
String html = "<html><head></head><body><img src=\""+ imagePath + "\"></body></html>";
mWebView.loadData(html, "text/html","utf-8");
しかし、私は 700 の異なる html ファイルを持っており、多くの異なる場所に多くの画像があります... そのため、html コードを変更することはできません。
画像フォルダーを html ファイルにリンクして、それらを baseUrl として適切に使用する方法はありますか?