3

いくつかの写真を含む 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 として適切に使用する方法はありますか?

4

2 に答える 2

3

ロード ステートメントに構文エラーがあります。:後に置く必要がありますfile

myWebView.loadDataWithBaseURL("file:///mnt/sdcard/com.mypackage.myproject/3", myHtml, "text/html", "utf-8", "");
于 2012-08-01T07:17:44.967 に答える
0

画像のフル パスを html に入れる必要はありません。

img src="images/test1.jpg"

その代わり

img src=\""+ imagePath + "\"

于 2019-10-01T18:04:47.410 に答える