Android:无法从内部存储将图像加载到webview

时间:2013-02-10 00:28:14

标签: android image webview storage

对于我的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中包含所有权限。所以我真的不明白问题是什么。任何建议或意见将不胜感激。

3 个答案:

答案 0 :(得分:1)

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

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

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

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

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

在此之后,您可以使用index.html内的常规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);

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

How to download and save an image in Android

保存图像,然后图像应该没问题