小编bro*_*rli的帖子

Android:如何在webview中从远程加载的html页面引用资产图像

我正在尝试从WebView中的HTML页面中加载/引用应用程序资源文件夹中的图像.与大多数示例不同,HTML页面本身不在资源文件夹中,而是通过http从服务器加载.此问题的背景是一些性能改进,通过直接从设备加载静态图像,可以减少加载时间(以及传输的数据量).我不确定Android是否有一些限制,因为通过允许从远程加载的网页访问本地文件存储,有一定的可能性来利用该应用程序.

我首先尝试使用加载图像,<img src="file:///android_asset/myimage.png">但失败了(原因很明显).我的下一次尝试是使用ContentProvider类和参考图像<img src="content://com.myapp.assetcontentprovider/myimage.png">.此ContentProvider实现如下:

public class AssetContentProvider extends ContentProvider
{
private static final String URI_PREFIX = "content://com.myapp.assetcontentprovider";

public static String constructUri(String url) {
    Uri uri = Uri.parse(url);
    return uri.isAbsolute() ? url : URI_PREFIX + url;
}

@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
    Log.d("AssetContentProvider", uri.getPath());
    try {
        return getContext().getAssets().openFd(uri.getPath().substring(1)).getParcelFileDescriptor();
    } catch (IOException e) {
        Log.d("AssetContentProvider", "IOException for " + uri.getPath());
        throw new FileNotFoundException();
    }
}

// more methods irrelevant for this …
Run Code Online (Sandbox Code Playgroud)

android assets webview android-webview

10
推荐指数
2
解决办法
9031
查看次数

标签 统计

android ×1

android-webview ×1

assets ×1

webview ×1