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; activeNetworkInfo.isConnected();
}
}
[/java]
Create activity_main.xml under res/layout folder.
activity_main.xml:
[xml]
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&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"&gt;
&lt;ImageView
android:id="@+id/imageView1"
android:layout_width="100dp"
android:layout_height="100dp"
/&gt;
&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" /&gt;
&lt;/LinearLayout&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&lt;String, String, Bitmap&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]
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.spl.myproject"
android:versionCode="1"
android:versionName="1.0" &gt;
&lt;uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" /&gt;
&lt;uses-permission android:name="android.permission.INTERNET"/&gt;
&lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&gt;
&lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/&gt;
&lt;application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" &gt;
&lt;activity
android:name="com.spl.myproject.MainActivity"
android:label="@string/app_name" &gt;
&lt;intent-filter&gt;
&lt;action android:name="android.intent.action.MAIN" /&gt;
&lt;category android:name="android.intent.category.LAUNCHER" /&gt;
&lt;/intent-filter&gt;
&lt;/activity&gt;
&lt;/application&gt;
&lt;/manifest&gt;
[/xml]
Output: