我们希望在webview中显示带有文本,图像等内容的html页面离线(没有互联网连接)。我们只能显示文字。对于图像,我们将图像存储在图像URL的内部存储(SD卡)上,并用图像内部存储(SD卡)路径替换该图像URL(服务器URL)。
但是,这些图像没有在webview中显示。
例如, 下面是html中的img标签..
<img alt="img" class="center_top_img" src="http://test.com/uploads/section/images/523.jpg" />
我们正在将图片内部存储(SD卡)路径替换为上面的图片网址(服务器网址),如
<img alt="img" class="center_top_img" src=\"file:///data/data/com.app.test/files/523.jpg\" />
答案 0 :(得分:1)
无论图像在哪里,只要获取其绝对路径并预先添加“ file://”即可。
File file = ...
String imagePath + "file://" + file.getAbsolutePath();
String html = "...<img src=\""+ imagePath + "\">...";
答案 1 :(得分:0)
试试这个
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
String base = Environment.getExternalStorageDirectory().getAbsolutePath().toString();
String imagePath = "file://"+ base + "/test.jpg";
String html = "<html><head></head><body><img src=\""+ imagePath + "\"></body></html>";
mWebView.loadDataWithBaseURL("", html, "text/html","utf-8", "");
答案 2 :(得分:0)
请记住,您的图片位于app目录中。 你可以用这个:
<img src="file:///data/data/com.yourapp/files/yourimage.jpg" />
答案 3 :(得分:0)
在我的情况下,我希望图像位于“内部存储”中,而不是如描述中所述的sd卡(还应从对getExternalStorageDirectory的使用中推论出-您的问题标题却提到了“内部存储”。原因,找到正确的路径:
//image paths; 'images' folder was earlier created by getFilesDir
String basePATH = "";
String imagePSPPath = "";
String imagePSP = "passportImage.jpeg"; //can be generated dynamically if needed
File images = new File(getApplicationContext().getFilesDir(), "images");
if(file.exists()) {
//fine, it exists, build right strings
basePATH = images.toString();
imagePSPPath = basePATH +"/"+ imagePSP;
Log.i("XPATH", imagePSPPath); //loged for ease of copying
}else {
//error, path not found
Toast.makeText(YourActivity.this, "Sorry, path not found: ", Toast.LENGTH_LONG).show();
}
接下来,使用此路径,但还要确保它具有3个正斜杠,而不是2个。对我来说,我只是从LOG.i复制了XPATH地址,并将其直接粘贴到我的HTML页面中:
<img src="file:///"+imagePSPPath +" alt="PSP Photo">