我正在使用以下类来下载图像。我发送的URL是正确的,但url.getContext()每次都返回null。有人知道为什么吗?
package com.WasserSportLotse;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import android.content.Context;
import android.graphics.drawable.Drawable;
class ImageDownloader {
private Drawable d;
public ImageDownloader(Context ctx, String url, String saveFilename) {
try {
InputStream is = (InputStream) this.fetch(url);
d = Drawable.createFromStream(is, "src");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public Drawable getImage(){
return d;
}
public Object fetch(String address) throws MalformedURLException,IOException {
URL url = new URL(address);
Object content = url.getContent();
return content;
}
}
答案 0 :(得分:0)
调用url.getContent()
将返回一个图像(如果适用),并且只有它的流不是图像或音频剪辑。虽然现在这似乎不是你的问题,但一旦你弄明白这个问题就会出现问题。
您的代码看起来正确。我唯一能想到的是地址不正确。它可能在浏览器中工作,但URL类可能比您的浏览器更挑剔。确保您使用的是完整格式的网址,并预先添加了http://(不仅仅是www)
答案 1 :(得分:0)
我改变了类很多,发现了一个更简单的版本
private String path = "http://www.*YOURPATH.COM/SOMETHING*";
private String file;
private String url;
public ImageDownloader(String file){
this.file = URLEncoder.encode(file);
url = path + this.file;
}
public Drawable getImage() throws IOException, MalformedURLException {
return Drawable.createFromStream(((java.io.InputStream)new java.net.URL(url).getContent()), "name");
}