1

我有一个动态构建的 html 页面。一些图像来自 Internet url,而其他图像我想从 Assets 文件夹中加载。页面正确呈现互联网图像,但是它只是拒绝加载本地图像。我尝试了许多变体,包括以下变体,但没有一个会加载本地图像。如果一切都是从互联网 url 加载的,整个页面都会正确呈现,但我真的不想去互联网上寻找不会改变的静态内容。有任何想法吗?

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='我的图片'>" ;

//--尝试 4--> 炸药!

该页面使用..

webview.loadData(pageData,"text/html",null);

但我也试过

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

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

4

1 回答 1

4

您需要确保使用基本 url 加载 html,尽管该基本 url 不需要是任何相关的

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

然后你可以使用类似这样的东西来引用资产文件夹中的东西

file:///android_asset/image1.jpg

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

于 2012-04-20T00:38:37.337 回答