webview.loadData()不会加载本地图像

时间:2012-04-19 21:55:40

标签: android

我有一个动态构建的html页面。一些图像来自互联网网址和其他我想从Assets文件夹加载的图像。页面正确呈现互联网图像,但是,它只是拒绝加载本地图像。我尝试了很多变种,包括以下内容,没有一个会加载本地图像。如果所有内容都是从互联网网址加载的,那么整个页面都会正确呈现,但我真的不想去互联网寻找不会改变的静态内容。有什么想法吗?

String pageData =“一堆html标记......”;

// - 我必须删除<从下面的img标签获取此论坛上的垃圾邮件过滤器 - >

// - 尝试1 - > pageData + =“img src ='file:/// data / data /(我的包)/files/image1.png'alt ='我的形象'>”;

// - 尝试2 - > pageData + =“img src ='/ data / data /(我的包)/image1.png'alt ='我的形象'>”;

// - 尝试3 - > pageData + =“img src ='src ='data:image / jpeg; base64,'”+ readAssetFileAsBase64(“image1.png”)+“'alt ='my image'>”;

// - 尝试4 - > 炸药!

使用..

呈现页面

webview.loadData(pageData, “text / html的”,NULL);

但我也试过

webview.loadDataWithBaseURL(“file://”,s,“text / html”,“windows-1252”,null);

我不能使用.loadUrl(),因为页面是动态构建的。我想我可以将动态页面写入磁盘调用.loadUrl(),但这看起来效率不高。

1 个答案:

答案 0 :(得分:4)

您需要确保使用基本网址加载html,尽管该基本网址不需要任何相关内容

webView.loadDataWithBaseURL("fake://not/needed", htmlString, mimeType, encoding, "");

然后你可以使用类似的东西

引用assets文件夹中的内容
file:///android_asset/image1.jpg

“android_asset”路径似乎是你还没有尝试过的东西。如果您的文件不在资源文件夹中,那么您需要使用ContentProvider提供这些文件,请参阅我的网站上的本教程:http://responsiveandroid.com/2012/02/20/serving-android-webview-resources-with-content-providers.html