Saturday, August 16, 2014

Check the DATA(3G)/WIFI connection status & GPS status in ANDROID device

When you are try to assess data from web services you must check the device have a data connection at that time. If not the application may stop. All so when you work with Google maps your device must have a proper GPS & a data connection at that time. So before call such method you must check all available connections are working properly. In here I’m going to demonstrate how to check the available connections are working propyl and if not give a warning message for the user.


First you give the following permissions in Manifest file

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


------------------------------------------------------------------------------------------------------------------


import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){

               //check the GPS is Enabled 
            Toast.makeText(this, "GPS is Enabled in your devide", Toast.LENGTH_SHORT).show();
        }else{
           
//IF GPS not working open settings for on the GPS
              showGPSDisabledAlertToUser();
        }
        if(checkInterNet()){
           
//check the DATA/WIFI is Enabled
 Toast.makeText(this, "Data is Enabled in your devide", Toast.LENGTH_SHORT).show();
        }
        else{

//IF DATA/WIFI not working open settings for on the DATA/WIFI            showDATADisabledAlertToUser();
        }
    }


    @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;
    }
    private void showGPSDisabledAlertToUser(){ //Show AlertDialog to help to Enable GPS connection
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setMessage("GPS is disabled in your device. Would you like to enable it?")
        .setCancelable(false)
        .setPositiveButton("Goto Settings Page To Enable GPS",
                new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog, int id){
                Intent callGPSSettingIntent = new Intent(
                        android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                startActivity(callGPSSettingIntent);
            }
        });
        alertDialogBuilder.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog, int id){
                dialog.cancel();
            }
        });
        AlertDialog alert = alertDialogBuilder.create();
        alert.show();
    }
    private void showDATADisabledAlertToUser(){

//Show AlertDialog to help to Enable DATA(3G)/WIFI connection
         AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setMessage("DATA is disabled in your device. Would you like to enable it?")
        .setCancelable(false)
        .setPositiveButton("Goto Settings Page To Enable DATA",
                new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog, int id){
                Intent callGPSSettingIntent = new Intent(
                        android.provider.Settings.ACTION_DATA_ROAMING_SETTINGS);
                startActivity(callGPSSettingIntent);
            }
        });
        alertDialogBuilder.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog, int id){
                dialog.cancel();
            }
        });
        AlertDialog alert = alertDialogBuilder.create();
        alert.show();
    }
    private boolean checkInterNet(){//CHECK the WIFI/DATA(3G) connection
         ConnectivityManager connec = (ConnectivityManager) getSystemService(
                    Context.CONNECTIVITY_SERVICE);
         NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
         NetworkInfo mobile = connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            // Check if wifi or mobile network is available or not. If any of them is
            // available or connected then it will return true, otherwise false;

            return  mobile.isConnected() || wifi.isConnected();
       
    }
   
}






Check DATA(3G)/WIFI Connection

Check GPS Connection