加载图像
语境:加载图像
我的应用程序有时会显示“表”,这是包含文本和图片的HTML文件:
<p>image description </p>
<p><img src="/api/medias/get/videos/56afad6447eba61c8099544b?thumbnail=true&company=4f86d0a9d655ab9794f5d1d2&fullSizedCover=true"
alt=""
data-id="56afad6447eba61c8099544b"
data-type="video" data-width="640" data-height="1136" /></p>
然后我用body.loadDataWithBaseURL(<my api url>, body, "text/html; charset=UTF-8", null, null);
我不认为它是相关的,但我会说,以防万一,我有一个模板正文,其中包含CSS和JavaScript。该js脚本检测图像点击并将“data-id”传输给android方法(通过JavascriptInterface
)。在这种情况下,它会打开一个视频播放器并播放它。
问题:
我的应用程序允许用户下载这些表的后面离线vizualisation。所以,我下载HTML,然后下载图片到我的本地私有目录(Context.getFileDir()
),并更改HTML设置“缩略图”来源我下载的图像的src:
<p>video</p>
<p><img src="69c623955ecb5bd414f908cd383f3809.jpg"
alt=""
data-id="56afad6447eba61c8099544b"
data-type="video" data-width="640" data-height="360" /></p>
我的问题是:什么我把基地网址放到我的webview中以获得预期的行为(即:显示下载的图像)。
我试过Context.getFileDir().getAbsolutePath()
,content://com.android.htmlfileprovider
和其他一些。
我应该改变吗?
感谢了很多,
这非常适用:
Picasso.with(iv.getContext()).load(new File(getContext().getFilesDir() + "/" + "69c623955ecb5bd414f908cd383f3809.jpg")).into(iv);
的HTML:
<p>video</p>
<p><img src="69c623955ecb5bd414f908cd383f3809.jpg" alt="" data-id="56afad6447eba61c8099544b" data-type="video" data-width="640" data-height="360" /></p>
我基地网址:baseUrl = Uri.fromFile(getContext().getFilesDir()).toString();
并最终: webview.loadDataWithBaseURL(baseUrl, body, "text/html; charset=UTF-8", null, null);
如果您已经下载了/有模板,您可以尝试使用null baseUrl,并将该模板作为body传递给webview。 并通过之前查找img标签,并设置img src与本地存储的文件的完整路径。如下所示:
Document doc = Jsoup.parse(newHtml);
Elements elems = doc.getElementsByTag("img");
for (Element el : elems) {
String filename = el.attr("src"); //presumably only name
String picUri = "file:///" + folder + "/"+filename;
el.attr("src", picUri);
}
web.loadDataWithBaseURL(null, htmlBody, "text/html", "UTF-8", null);
我不知道为什么,但确实,它不会工作把“基地”的基础网址,但传递null,并将其手动内部src标签工程 –
“我尝试了Context.getFileDir()。getAbsolutePath(),” - 尝试使用'file'方案。更容易使用'Uri.fromFile(getFilesDir())。toString()'。 – CommonsWare
我的图片仍然不会显示这个baseUrl:'file:/// data/user/0//files',因为'new File(Context.getFilesDir()+“/”+“69c623955ecb5bd414f908cd383f3809.jpg”) .exists()'==真。 –
@CommonsWare也是有用的吗? (以前没有,只是添加它们,但似乎没有改变任何东西): - 'body.getSettings()。setAllowFileAccess(true);' - 'body.getSettings()。setAllowContentAccess(true) ;' - 'body.getSettings()。setAllowFileAccessFromFileURLs(true);' - 'body.getSettings()。setAllowUniversalAccessFromFileURLs(true);' –