package com.example.hardnetworkingdemo; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.widget.ImageView; public class MainActivity extends Activity { ImageView ivBasicImage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ivBasicImage = (ImageView) findViewById(R.id.ivBasicImage); String imageUrl = "http://2.gravatar.com/avatar/858dfac47ab8176458c005414d3f0c36?s=128&d=&r=G"; new ImageDownloadTask().execute(imageUrl); } private class ImageDownloadTask extends AsyncTask<String, Void, Bitmap> { protected Bitmap doInBackground(String... addresses) { // Convert string to URL URL url = getUrlFromString(addresses[0]); // Get input stream InputStream in = getInputStream(url); // Decode bitmap Bitmap bitmap = decodeBitmap(in); // Return bitmap result return bitmap; } private URL getUrlFromString(String address) { URL url; try { url = new URL(address); } catch (MalformedURLException e1) { url = null; } return url; } private InputStream getInputStream(URL url) { InputStream in; // Open connection URLConnection conn; try { conn = url.openConnection(); conn.connect(); in = conn.getInputStream(); } catch (IOException e) { in = null; } return in; } private Bitmap decodeBitmap(InputStream in) { Bitmap bitmap; try { // Turn response into Bitmap bitmap = BitmapFactory.decodeStream(in); // Close the input stream in.close(); } catch (IOException e) { in = null; bitmap = null; } return bitmap; } @Override protected void onPostExecute(Bitmap result) { // VERY IMPORTANT: AsyncTask is called in a separate thread, // but onPostExecute is called on the main UIThread // So the UI can be updated/manipulated in this method // Set bitmap image for the result ivBasicImage.setImageBitmap(result); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }