0

对于我的 android 应用程序,我想将一个 html 文件加载到 webview,这个 html 文件将存储在“data/data/com.myapp/files/index.html”中。我可以使用关联的 javascript 文件加载它,但是当我想从“data/data/com.myapp/files/img/image.png”加载图像时,它不起作用。这就是我尝试这样做的方式:

webView.loadDataWithBaseURL(getFilesDir()+"/img/", html, "text/html","utf-8", ""); //html is my html string I get from index.html

我也试过:

webView.loadUrl(getFilesDir()+"/img/"+index.html");

在我的 html 文件中,我有

 <img id="image" src="/img/image.png"/>

我已经验证并且文件已加载到磁盘上,但我无法在 webview 上显示它,图像显示为空白。我就是不能让它工作。所以我的问题是:这甚至可能吗?如果是的话,有人可以告诉我怎么做吗?

我搜索并发现其他人也有类似的问题,但没有一个解决方案有效。

编辑:将我的文件放在资产目录中对我来说不是一个选择,我已经测试过它并且它有效。

我刚刚尝试了我在这里找到的以下代码:Load the image saved in sdcard in webview

String base = getFilesDir(); 
String imagePath = base + "/test.jpg"; 
String html = ("<html>
            <head>
            </head>
            <body>
            <img src=\""+ imagePath + "\">
            </body>
            </html>
            "); 
mWebView.loadData(html, "text/html","utf-8");

但仍然没有成功,显然它对提出问题的人有用。我也测试了外部存储,但结果是一样的。所有权限都在 manifest.xml 中。所以我真的不明白问题是什么。任何建议或意见将不胜感激。

4

3 回答 3

1

考虑将静态文件assets放在 android 项目内的文件夹中,并尝试使用以下方法加载文件:

mWebView.loadUrl("file:///android_asset/html/index.html");

然后,从 HTML 文件中引用图像,使用相对路径的样式。

例如,在您的情况下,您将具有以下目录结构:

PROJECT-ROOT
 |-src/
 |-assets/
    |-html/index.html
      |-img/image.png
      |-css/style.css

在此之后,您可以在内部使用普通的 html 标签,index.html就像制作任何网页一样。例如。<img id="image" src="img/image.png"/>或者<link rel="stylesheet" type="text/css" href="css/style.css">

不要忘记使用以下方法启用 JavaScript:

WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
于 2013-02-10T00:35:40.690 回答
0

问题解决了。它实际上来自格式错误的数据,一旦我检查并将正确的文件添加到手机内存中,它就开始工作了。

于 2013-03-26T12:19:57.007 回答
0

当您要将图像保存到内部存储时,请确保不要使用与下载 html 文件相同的代码。这就是我犯的错误。相反,使用

如何在 Android 中下载和保存图像

保存你的图像,那么图像应该没问题

于 2015-09-14T17:51:40.690 回答