Android Interview Questions - SPLessons

Android Network Connection

Home > Lesson > Chapter 2
SPLessons 5 Steps, 3 Clicks
5 Steps - 3 Clicks

Android Network Connection

Android Network Connection

Android Network Connection explains how to check for internet connectivity status.  To perform network operations using the applications in an android device, the device has to be connected to the internet or any available local network. While an android device can have a number of network connections, the user needs to check for internet connectivity status before making any HTTP Requests to avoid http exceptions.

Checking Network Connection

In order to check for the internet status, instantiate an object of  ConnectivityManager class  by calling getSystemService() method. The syntax is as given below − Ex:
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

The following example checks for the network connection before downloading an image from the server.
Create MainActivity.java under src/<your packagename>. MainActivity.java: [java] public class MainActivity extends Activity { Context context; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context=this; Button download=(Button)findViewById(R.id.button1); final ImageView image=(ImageView)findViewById(R.id.imageView1); //on click download download.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //check whether device is connected to Internet or not boolean b=isNetworkAvailable(); if(b) { //access image from server BitImageService img=new BitImageService(context, image); img.execute("http://www.splessons.com/wp-content/uploads/2015/06/splessons.png"); } else { Toast.makeText(context, "Check your internet connection and try again later", Toast.LENGTH_LONG).show(); } } }); } private boolean isNetworkAvailable() { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); return activeNetworkInfo != null &amp;amp;&amp;amp; activeNetworkInfo.isConnected(); } } [/java] Create activity_main.xml under res/layout folder. activity_main.xml: [xml] &amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt; &amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_gravity="center" android:gravity="center" android:background="#FFFFFF"&amp;gt; &amp;lt;ImageView android:id="@+id/imageView1" android:layout_width="100dp" android:layout_height="100dp" /&amp;gt; &amp;lt;Button android:id="@+id/button1" android:layout_width="100dp" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:background="#009ACD" android:text="Download" /&amp;gt; &amp;lt;/LinearLayout&amp;gt; [/xml] Create BitImageService.java under src/<your packagename>. The BitImageService class runs in the background when downloading an image. BitImageService.java: [java] public class BitImageService extends AsyncTask&amp;lt;String, String, Bitmap&amp;gt;{ //variable declaration Bitmap bit; Context context; ImageView image; //constructor BitImageService(Context context,ImageView image) { this.context=context; this.image=image; } @Override protected Bitmap doInBackground(String... params) { // TODO Auto-generated method stub try { //create URl URL url=new URL(params[0]); //URL encoding URI uri=new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef()); //convert URI to URL url = uri.toURL(); System.out.println(url); //open URL connection HttpURLConnection urlConnection = null; try { urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.connect(); //decoding image InputStream in = new BufferedInputStream(urlConnection.getInputStream(), 1024); //decoding stream data back into image Bitmap that android understands bit = BitmapFactory.decodeStream(in); System.out.println(bit); } catch (Exception e1) { e1.printStackTrace(); } finally { if (urlConnection != null) { urlConnection.disconnect(); } } } catch (Exception e) { e.printStackTrace(); } return bit; } protected void onPostExecute(Bitmap bitmap) { image.setImageBitmap(bitmap); } } [/java] AndroidManifest.xml: The following permissions are required to check for  internet connection and to download an image using HTTP connection.
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
[xml] &amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt; &amp;lt;manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.spl.myproject" android:versionCode="1" android:versionName="1.0" &amp;gt; &amp;lt;uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /&amp;gt; &amp;lt;uses-permission android:name="android.permission.INTERNET"/&amp;gt; &amp;lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&amp;gt; &amp;lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/&amp;gt; &amp;lt;application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" &amp;gt; &amp;lt;activity android:name="com.spl.myproject.MainActivity" android:label="@string/app_name" &amp;gt; &amp;lt;intent-filter&amp;gt; &amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt; &amp;lt;category android:name="android.intent.category.LAUNCHER" /&amp;gt; &amp;lt;/intent-filter&amp;gt; &amp;lt;/activity&amp;gt; &amp;lt;/application&amp;gt; &amp;lt;/manifest&amp;gt; [/xml] Output: