Stella
Stella

Reputation: 1868

Setting image from url

I have an image view in my Android app, where I have to set a simple image from url. I tried the below code, but it doesn't set the image from url.

try {
        URL url = new URL("https://drive.google.com/...");
        HttpURLConnection connection = (HttpURLConnection)url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream stream = connection.getInputStream();
        Bitmap teamBmpImage = BitmapFactory.decodeStream(stream);
        teamImgView.setImageBitmap(teamBmpImage);
    }
    catch (Exception e) {

    }

Could someone guide me to achieve this please?

UPDATED CODE: Which gives Nullpointer exception

public class AboutActivity extends ActionBarActivity {
    ImageView teamImgView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_about);

        teamImgView = (ImageView) this.findViewById(R.id.teamImageView);
        new DownloadImageTask(teamImgView).execute("http://docs.oracle.com/javase/tutorial/2d/images/examples/strawberry.jpg");
    }

    class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
        ImageView bmImage;

        public DownloadImageTask(ImageView bmImage) {
            this.bmImage = bmImage;
        }

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            //pd.show();
        }

        protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap mIcon11 = null;
            try {
                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return mIcon11;
        }

        @Override
        protected void onPostExecute(Bitmap result) {
            super.onPostExecute(result);
            //pd.dismiss();
            bmImage.setImageBitmap(result);
        }
    }
}

Upvotes: 0

Views: 143

Answers (4)

Umair Shaikh
Umair Shaikh

Reputation: 41

Try following this link: http://www.tutorialsbuzz.com/2014/11/android-volley-url-imageview.html

This will help you to load your image using Volley library which will do all the networking stuff on networking thread and set your image on main UI thread. It has also the LRUCache part which you can skip if you want.

Upvotes: 0

DonCalzone
DonCalzone

Reputation: 56

I guess you are executing your code on the MainThread, which leads to a NetworkOnMainThreadException in android. Try to execute your code asynchronous like in the example below

new AsyncTask<String, Integer, Bitmap>() {

@Override
protected Bitmap doInBackground(String... params) {
    try {
        URL url = new URL(params[0]);
        return BitmapFactory.decodeStream(url.openConnection().getInputStream());
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

@Override
protected void onPostExecute(Bitmap bm) {
    ImageView teamImgView = (ImageView) findViewById(R.id.teamImageView);
    teamImgView.setImageBitmap(bm);
}
}.execute("https://drive.google.com/uc?....");

Upvotes: 2

JaimeToca
JaimeToca

Reputation: 46

As bojan says you can use Picasso library wich handles many common pitfalls of image loading on Android.

Picasso.with(context).load("http://myurl/myImage.png").into(imageView);

Picasso

Anyway, check out this threat too :)

How to load an ImageView by URL in Android?

Upvotes: 0

Bojan Kseneman
Bojan Kseneman

Reputation: 15668

You can use Picasso library and here is a detailed tutorial on how to do this.

This is very simple example usage

Picasso.with(activityContext)
    .load("https://drive.google.com/uc?....")
    .placeholder(R.drawable.image_name)
    .into(imageView);

Upvotes: 1

Related Questions