Android webview loadDataWithBaseURL如何从资产加载图片?

use*_*713 11 url android load webview

在我的项目中,我有一个文件:

"MyProject/assets/folder1/image1.jpg"
"MyProject/assets/folder1/index.html".
Run Code Online (Sandbox Code Playgroud)

在webView中我需要打开index.html(带图片).

我尝试这段代码:

String baseUrl = "file:///android_asset/folder1/";
webView.loadDataWithBaseURL(baseUrl, readFileAsString("index.html") , mimeType, "UTF-8", null);
Run Code Online (Sandbox Code Playgroud)

但图像无法加载.

如果我将图像放到" assets "目录(MyProject/assets/)并使baseUrl = "file:///android_asset"图像正确加载;

如何从root资产目录加载图像,而不是从assets/folder1

Jan*_*joy 14

试试这样

WebView webview = (WebView)this.findViewById(R.id.webview);


String html = "<html><head><title>TITLE!!!</title></head>";
html += "<body><h1>Image?</h1><img src=\"icon.png\" /></body></html>";


webview.loadDataWithBaseURL("file:///android_res/drawable/", html, "text/html", "UTF-8", null); 
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请尝试此链接

完美的LoadDataWithBaseurl


beh*_*lit 5

我认为您必须将基础设置为资源并将子文件夹添加到您的图像src中,如下所示:

webView.loadDataWithBaseURL("file:///android_asset/", readAssetFileAsString("folder1/index.html"), "text/html", "UTF-8", null);

HTML: <img src="folder1/image1.jpg">

这适用于Android 5.1

private String readAssetFileAsString(String sourceHtmlLocation)
{
    InputStream is;
    try
    {
        is = getContext().getAssets().open(sourceHtmlLocation);
        int size = is.available();

        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();

        return new String(buffer, "UTF-8");
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }

    return "";
}
Run Code Online (Sandbox Code Playgroud)


Mur*_*san -15

你给了互联网许可吗?

<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)