2013-02-10 106 views
0

对于我的android应用程序,我想加载一个html文件到webview,这个html文件将被存储在“data/data/com.myapp/files/index.html”中。我可以加载相关的JavaScript文件,但是当我想从“data/data/com.myapp/files/img/image.png”加载图片时,它不起作用。 这是如何我试图做到这一点:Android:无法从内部存储器加载图像到webview

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上显示它,显示屏对于图像保持空白。我无法让它工作。所以我的问题是:它甚至有可能吗?如果有,请告诉我如何?

我查过并发现其他人有类似的问题,但没有解决方案正在工作。

编辑:把我的文件放在资产directorty不是我的选项,我已经测试过,它的工作原理。

我只是想下面的代码,我发现在这里: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中有所有权限。所以我真的不知道问题是什么。任何建议或意见将不胜感激。

回答

0

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

+0

Pl你可以举一个例子f你的代码..请..我也卡在这里。 html部分/ js/android .. – 2013-09-06 00:45:05

+0

@Anila,我可能有同样的问题......你还记得这里有什么问题吗? – TacB0sS 2015-03-01 07:39:02

1

考虑将静态文件中assets文件夹中的Android项目中,并尝试使用加载文件:

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

,然后从HTML文件指的是使用相对路径图片,样式。

例如,在你的情况,你会follwing目录结构:

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); 
+0

你的答案您好感谢,我已经尝试过了,它的工作原理,但我需要把我的文件在手机内存中,因为它们可能会在运行期间被修改,这在将它们置于资产文件夹中时是不可能的。 – Anila 2013-02-10 12:40:39

相关问题