Here is source code of the Program to Open an Internet Data Stream in Android. The program is successfully compiled and run on a Windows system using Eclipse Ide. The program output is also shown below.
Before you can access Internet resources, you need to add an INTERNET uses-permission node to
your application manifest, as shown in the following XML snippet:
<uses-permission android:name=”android.permission.INTERNET”/>
The following shows the basic pattern for opening an Internet data stream
String myFeed = getString(R.string.my_feed); try { URL url = new URL(myFeed); // Create a new HTTP URL connection URLConnection connection = url.openConnection(); HttpURLConnection httpConnection = (HttpURLConnection)connection; int responseCode = httpConnection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { InputStream in = httpConnection.getInputStream(); processStream(in); } } catch (MalformedURLException e) { Log.d(TAG, “Malformed URL Exception.”); } catch (IOException e) { Log.d(TAG, “IO Exception.”); }
Here is the code to download a picture from internet following the url that is provided and displaying it on an Image view using an HTTP client.
Main Activity
package com.example.internet_stream; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.StatusLine; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import android.app.Activity; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Button but = (Button)findViewById(R.id.button); } public void downloadPicture(View view) { final ProgressDialog dialog = ProgressDialog.show(this, "Download", "downloading"); dialog.show(); new Thread(new Runnable() { @Override public void run() { try { final Bitmap downloadedBitmap = downloadBitmap("http://www.sanfoundry.com/wp-content/uploads/2013/04/san-ecosystem_new.png"); final ImageView imageView = (ImageView) findViewById(R.id.imageView1); runOnUiThread(new Runnable() { @Override public void run() { imageView.setImageBitmap(downloadedBitmap); } }); } catch (IOException e) { e.printStackTrace(); } finally { dialog.dismiss(); } } }).start(); } private Bitmap downloadBitmap(String url) throws IOException { //Create a new HTTP url connection HttpUriRequest request = new HttpGet(url.toString()); HttpClient httpClient = new DefaultHttpClient(); //get the rsponse HttpResponse response = httpClient.execute(request); //check for the status StatusLine statusLine = response.getStatusLine(); int responseCode = statusLine.getStatusCode(); //check for the response code if (responseCode == 200) { HttpEntity entity = response.getEntity(); byte[] bytes = EntityUtils.toByteArray(entity); Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); return bitmap; } else { throw new IOException("Download failed, HTTP response code " + responseCode + " - " + statusLine.getReasonPhrase()); } } @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; } }
ActivityMain.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="downloadPicture" android:text="Click to download" android:id="@+id/button"/> <ImageView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/ic_launcher" > </ImageView> </RelativeLayout>