在开发我在WebView中显示图像的简单应用程序时,我遇到了一些问题。
由于将我重定向到另一个页面,因此无法加载图像。我发现了问题,这对我来说只有一半。解决方案是
例如:
WebView ww = new WebView(this);
我尝试加载这样的图像:
ww.loadUrl("http://i1.kwejk.pl/site_media/obrazki/92825-ism.jpg");
和图像。
但是当我加载这样的图像时:
Map extraHeaders = new HashMap();
extraHeaders.put("Referer", "2");
ww.loadUrl("http://i1.kwejk.pl/site_media/obrazki/92825-ism.jpg", extraHeaders);
工作正常。
最大的问题是我在WebView中加载了大约10个图像:
String data="<html><body><img src="link1" /><img src="link2" /><img src="link3" /></body></html>";
ww.loadData(data);
问题是:当我尝试loadData而不是loadUrl时,是否有可能设置referer?
答案 0 :(得分:1)
我找到了解决问题的方法。
如果有人有这个,这里也是解决方案:
首先,您需要下载图片:
Bitmap image;
URL myFileUrl = new URL(urlToImage);
HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
conn.setDoInput(true);
conn.addRequestProperty("Referer", "httpReferer");
conn.connect();
InputStream is = conn.getInputStream();
image = BitmapFactory.decodeStream(is);
然后你需要将图像Bitmap转换为String:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
image.compress(CompressFormat.JPEG, 40, bos);
byte[] bitmapdata = bos.toByteArray();
String imgToString = Base64.encodeBytes(bitmapdata);
现在,很容易在WebView中显示String,如下所示:
String src = "<html><body><img src='data:image/png;base64," + imgToString + "'/></body></html>"
希望它有所帮助。
答案 1 :(得分:1)
这是我非常简单的解决方案,只需loaddatawithbaseurl
http://androidyou.blogspot.com/2011/06/how-to-set-android-webview-referrer.html