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

问题描述:

我有一个动态构建的html页面。某些图像来自Internet网址和其他我想从资源文件夹加载的图像。页面正确呈现互联网图像,但是,它只是拒绝加载本地图像。我尝试了许多变化,包括以下,没有人会加载本地图像。如果一切从网址加载,整个页面呈现正确,但我真的不想去互联网静态内容不会改变。有任何想法吗?webview.loadData()不会加载本地图像

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

// - 我只好从下面的img标签取下<到这个论坛上获得通过垃圾邮件过滤器 - >

// - 尝试1 - > pageData + =“IMG src ='file:/// data/data /(my package)/files/image1.png'alt ='我的图像'>“;

// - try 2 - > pageData + =“img src ='/ data/data /(my package)/image1.png'alt ='我的图像'>”;

// - try 3 - > pageData + =“img src ='src ='data:image/jpeg; base64,'”+ readAssetFileAsBase64(“image1.png”)+“'alt ='我的图像'>“;

// - 尝试4 - > 炸药!

该页面使用呈现..

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

,但我也试过

webview.loadDataWithBaseURL( “文件://”,S, “text/html的”, “窗口-1252”,NULL);

由于页面是动态构建的,因此我无法使用.loadUrl()。我想我可以将动态页面写入磁盘的调用.loadUrl(),但似乎并不那么高效。

你需要确保你载入一个基本URL的HTML,虽然基本URL并不需要是什么,相关

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

+1

实际上,您可以使用“file:/// android_asset /”作为webView的第一个参数.loadDataWithBaseURL,那么你可以像这样在你的html中引用图像,因为基本URL已经被指定。 – 2013-08-13 23:59:01

+0

帮了很多。谢谢 – 2014-07-23 08:36:02