从Internet下载JPEG时出现问题

时间:2011-05-02 15:20:06

标签: android url

我正在使用以下类来下载图像。我发送的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;
    }
}

2 个答案:

答案 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");
}