对于我的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中包含所有权限。所以我真的不明白问题是什么。任何建议或意见将不胜感激。
答案 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
保存图像,然后图像应该没问题