来自 SD 卡的图像未加载到 WebView 中

Images from SD Card is not loaded in the WebView

我将以下 HTML 代码加载到 String 中。

<html>
    <body>
        <img style="width:100%" src="file://storage/emulated/0/sdcard/Download/Page1.jpg"/>
        <img style="width:100%" src="file://storage/emulated/0/sdcard/Download/Page2.jpg"/>
        <img style="width:100%" src="file://storage/emulated/0/sdcard/Download/Page3.jpg"/>
        <img style="width:100%" src="file://storage/emulated/0/sdcard/Download/Page4.jpg"/>
    </body>
</html>

我正在尝试将 html 加载到我的应用程序中的 WebView 中,如下所示。

webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadDataWithBaseURL(null, html, "text/html", "utf-8", "");

我在 AndroidManifest.xml 中拥有以下权限,并确保已授予这些权限。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

我在 SO 中查看了很多答案(例如 this),但似乎无法找到将图像从 SD 卡加载到我的 WebView 中的解决方案。我还确保图像没有损坏(我可以使用 Gallery 应用程序查看这些图像)。有什么想法吗?

我在 logcat 中没有发现任何错误。但是,与此问题相关的可能 logcat 可能如下(虽然我不确定)。

W/cr_CrashFileManager: /data/user/0/com.example.myapp/cache/WebView/Crash Reports does not exist or is not a directory

这是 WebView 尝试加载图像时的样子。

提前感谢您的宝贵时间!

我没有使用 Environment.getExternalStorageDirectory,而是使用了 /sdcard/Downloads,这似乎可以解决问题。所以我生成的最终 HTML 有效如下。

<html>
    <body>
        <img style="width:100%" src="file://sdcard/Download/Page1.jpg"/>
        <img style="width:100%" src="file://sdcard/Download/Page2.jpg"/>
        <img style="width:100%" src="file://sdcard/Download/Page3.jpg"/>
        <img style="width:100%" src="file://sdcard/Download/Page4.jpg"/>
    </body>
</html>