Checkin for internet connection availability in Android.

This will be the initial set up to handle any network related operations.

Add below permissions in your manifest file:


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


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


Use below lines of code to get the relevant information:


NetworkInfo info = (NetworkInfo) ((ConnectivityManager)
this.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();


            if (info == null || !info.isConnected())
          {
               Log.d("msg","no internet connection");
            }
            else
            {
                Log.d("msg"," internet connection available...");
            }


Happy coding :-)

HANDLING SCREEN LOCK & UNLOCK BROADCAST EVENTS IN YOUR ANDROID APPLICATION

In Android, we will receive the broadcasted intents for screen lock & unlock. So in onCreate() method we have to set necessary action listeners. Also declare the necessary variables in the corresponding class.




//Declare the necessary variables
private BroadcastReceiver mReceiver;



//add the  below lines of code in to your onCreate() method,
//soon after calling super method.[i.e super.onCreate()]

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);

filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);

// Customized BroadcastReceiver class
//Will be defined soon..

mReceiver = new ScreenReceiver();
registerReceiver(mReceiver, filter);







FYI: We will receive Intent.ACTION_SCREEN_ON  action as soon screen is on. i.e It does not mean user has unlocked the screen.


Once we have set the actions which have to be listen to, we now have to define what should happen up on receiving corresponding action-intents. To  handle receivers we define a class which inherits BroadcastReceiver class.






public class ScreenReceiver extends BroadcastReceiver {

      @Override
      public void onReceive(Context context, Intent intent)
{
            if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF))
            {    
                  Log.v("$$$$$$", "In Method:  ACTION_SCREEN_OFF");
                  // onPause() will be called.
            }
            else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON))
            {
                  Log.v("$$$$$$", "In Method:  ACTION_SCREEN_ON");
//onResume() will be called.

//Better check for whether the screen was already locked
// if locked, do not take any resuming action in onResume()

                  //Suggest you, not to take any resuming action here.       
            }
            else if(intent.getAction().equals(Intent.ACTION_USER_PRESENT))
            {
                  Log.v("$$$$$$", "In Method:  ACTION_USER_PRESENT");
//Handle resuming events
}

      }




Finally,  we have to unregister the action-intents         which ever we have set in onCreate() method. This should be done in onDestroy() of your Activity.




      @Override
      public void onDestroy()
      {
            super.onDestroy();
            Log.v("$$$$$$", "In Method: onDestroy()");
           
            if (mReceiver != null)
            {
                  unregisterReceiver(mReceiver);
                  mReceiver = null;
            }          
         
}





         One more important issue when screen locked is: our current Activity may be stopped forcefully by the system if it finds shortage of memory, instead of moving Activity to background. In such a case, we should have to save (all the necessary data) the current state of the Activity.

         In order to handle this, system will search for onSaveInstanceState() an overridden method before forcefully finishing the current Activity, and during the time of restore, it will call onRestoreInstanceState().




@Override
public void  onSaveInstanceState(Bundle outState)
{
      Log.v("$````$", "In Method: onSaveInstanceState()");
      //if necessary,set a flag to check whether we have to restore or not
      //handle necessary savings…
}

@Override
public void onRestoreInstanceState(Bundle inState)
{
      Log.v("$````$", "In Method: onRestoreInstanceState()");
      //if any saved state, restore from it…
}





That’s it. Happy coding J