Android: Как ссылаться на изображения ресурсов с удаленно загруженной HTML-страницы в webview

Я пытаюсь загрузить / ссылаться на изображения из папки с ресурсами приложения из HTML-страницы в WebView. В отличие от большинства примеров, сама HTML-страница не находится в папке с ресурсами, а загружается с сервера через http. В основе этого вопроса лежат некоторые улучшения производительности, которые должны сократить время загрузки (и объем передаваемых данных) за счет загрузки статических изображений непосредственно с устройства. Я не уверен, есть ли здесь какие-то ограничения для Android, потому что есть определенная возможность использовать приложение, разрешив доступ к локальному хранилищу файлов с удаленно загруженной веб-страницы.

Сначала я попытался загрузить изображения с помощью , но это не удалось (по очевидным причинам). Моя следующая попытка заключалась в использовании класса ContentProvider и эталонных изображений с использованием . Этот 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 post
}

При загрузке HTML-страницы я вижу в журнале отладки, что openFile () фактически запускается из WebView и возвращает действительный объект ParcelFileDescriptor , но изображение все же не отображается. В журнале нет сообщений об ошибках, которые сказали бы мне, что WebView отказался загружать / отображать изображение. Есть идеи, если и как это может сработать?

10
задан brotherli 4 October 2010 в 11:55
поделиться