How to Create Global Broadcast Receiver and Test Service in Android

This article explains how to create a global broadcast receiver as well as to create services in an Android project.

Introduction


This article explains how to create a global broadcast receiver as well as to create services in an Android project. First of all we will create a new project in Android.

Procedure
  1. Start the Eclipse IDE.
  2. Create a new project.
  3. Create a MainActivity.java (here Abhijeet.java) file.
  4. Create a new java file bootstartup.java as in the following:

    1. public class bootstartup extends BroadcastReceiver {  
    2.       
    3.     @Override  
    4.    
    5.     public void onReceive(Context context, Intent intent) {  
    6.       
    7.     // start the service  
    8.     Intent service=new Intent(context,TestService.class);  
    9.     context.startService(service);  
    10. Log.e("com.example.myglobalbroadcastreceiver",  
    11. "BroadcastReceived:"+intent.getAction())  
    12.       
    13.     // start the app  
    14. Intent app= new Intent(context,Abhijeet.class);  
    15. context.startService(app);   
  5. Create a new java file TestService.java as in the following:

    1. public class TestService extends Service {  
    2.    
    3.             @Override  
    4.             public IBinder onBind(Intent arg0) {  
    5.                         // TODO Auto-generated method stub  
    6.             throw new UnsupportedOperationException("it is not implemented");  
    7.             }  
    8.    
    9.             @Override  
    10.             public void onCreate() {  
    11.                         // TODO Auto-generated method stub  
    12.                         super.onCreate();  
    13. Toast.makeText(getApplicationContext(), "abhijeet's Service is created",1).show();  
    14.                          
    15.             }  
    16.    
    17.             @Override  
    18.             public void onDestroy() {  
    19.                         // TODO Auto-generated method stub  
    20.    
    21. Toast.makeText(getApplicationContext(), "Service is destroyed",1).show();  
    22.                          
    23.                         super.onDestroy();  
    24.             }  
    25.    
    26.             @Override  
    27.             public int onStartCommand(Intent intent, int flags, int startId) {  
    28.                         // TODO Auto-generated method stub  
    29.    
    30. Toast.makeText(getApplicationContext(), " abhijeet's Service is working",1).show();  
    31.                          
    32. return super.onStartCommand(intent, flags, startId);  
    33.             }   
  6.  Now add a bootstartup.java file as a receiver.

    Step 1: Open the application of the manifest file as in the following:

    Manifest File

    Step 2: Then click on Add for adding a receiver.

    Adding Reciever

    Step 3: It will automatically search the bootstartup receiver class.

    Reciever Class

    Step 4: It is very important for making a global receiver that we should provide a name to that receiver such that the name is started with a dot followed by a lower-case letter.

    Global Reciever

    Step 5: Set the Exported and Enabled properties to true as in the following:

    Enabling Property

    Step 6: Add actions on the receiver in the manifest file as in the following:

    Adding Actions
     
  7. Now add a TestService.java file as a Service in the manifest file.

    Step 1: Select Service.

    Select Service

    Step 2: It will automatically search the TestService class.

    Adding Class

    Step 3: Select the true option for the exported and enabled properties as in the following:
     

    <service android:name="TestService" android:exported="true" android:enabled="true" android:permission="android.permission.INTERNET"></service>

Code

Abhijeet.java 

  1. package com.example.myglobalbroadcastreceiver;  
  2. import android.support.v7.app.ActionBarActivity;  
  3. import android.support.v7.app.ActionBar;  
  4. import android.support.v4.app.Fragment;  
  5. import android.os.Bundle;  
  6. import android.view.LayoutInflater;  
  7. import android.view.Menu;  
  8. import android.view.MenuItem;  
  9. import android.view.View;  
  10. import android.view.ViewGroup;  
  11. import android.os.Build;  
  12.   
  13. public class Abhijeet extends ActionBarActivity {  
  14.   
  15.             @Override  
  16.             protected void onCreate(Bundle savedInstanceState) {  
  17.                         super.onCreate(savedInstanceState);  
  18.                         setContentView(R.layout.activity_abhijeet);  
  19.    
  20.                         if (savedInstanceState == null) {  
  21.                                     getSupportFragmentManager().beginTransaction()  
  22.                                                             .add(R.id.container, new PlaceholderFragment()).commit();  
  23.                         }  
  24.             }   
  25.   
  26.             @Override  
  27.             public boolean onCreateOptionsMenu(Menu menu) {  
  28.    
  29.                         // Inflate the menu; this adds items to the action bar if it is present.  
  30.                         getMenuInflater().inflate(R.menu.abhijeet, menu);  
  31.                         return true;  
  32.             }  
  33.    
  34.             @Override  
  35.             public boolean onOptionsItemSelected(MenuItem item) {  
  36.                         // Handle action bar item clicks here. The action bar will  
  37.                         // automatically handle clicks on the Home/Up button, so long  
  38.                         // as you specify a parent activity in AndroidManifest.xml.  
  39.                         int id = item.getItemId();  
  40.                         if (id == R.id.action_settings) {  
  41.                                     return true;  
  42.                         }  
  43.                         return super.onOptionsItemSelected(item);  
  44.             }  
  45.    
  46.             /** 
  47.              * A placeholder fragment containing a simple view. 
  48.              */  
  49.             public static class PlaceholderFragment extends Fragment {  
  50.    
  51.                         public PlaceholderFragment() {  
  52.                         }   
  53.                         @Override  
  54.                         public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  55.                                                 Bundle savedInstanceState) {  
  56.                                     View rootView = inflater.inflate(R.layout.fragment_abhijeet,  
  57.                                                             container, false);  
  58.                                     return rootView;  
  59.                         }  
  60.             }   
  61. }  

 bootstartup.java

  1. package com.example.myglobalbroadcastreceiver;  
  2. import android.content.BroadcastReceiver;  
  3. import android.content.Context;  
  4. import android.content.Intent;  
  5. import android.util.Log;  
  6.    
  7. public class bootstartup extends BroadcastReceiver {  
  8.    
  9.             @Override  
  10.              
  11.             public void onReceive(Context context, Intent intent) {  
  12.                         // TODO Auto-generated method stub  
  13.                         // start the service  
  14.                         Intent service=new Intent(context,TestService.class);                      
  15.                         context.startService(service);                    
  16.                         Log.e("com.example.myglobalbroadcastreceiver","Broadcast Received:"+intent.getAction());                         
  17.              
  18.                         // start the app               
  19.                         Intent app= new Intent(context,Abhijeet.class);  
  20.                         context.startService(app);             
  21.             }  
  22. }   

TestService.java

  1. package com.example.myglobalbroadcastreceiver;  
  2. import android.app.Service;  
  3. import android.content.Intent;  
  4. import android.os.IBinder;  
  5. import android.widget.Toast;  
  6.    
  7. public class TestService extends Service {  
  8.    
  9.             @Override  
  10.             public IBinder onBind(Intent arg0) {  
  11.                         // TODO Auto-generated method stub  
  12.                         throw new UnsupportedOperationException("it is not implemented");  
  13.             }  
  14.    
  15.             @Override  
  16.             public void onCreate() {  
  17.                         // TODO Auto-generated method stub  
  18.                         super.onCreate();                        
  19.                         Toast.makeText(getApplicationContext(), "abhijeet's Service is created",1).show();     
  20.             }  
  21.    
  22.             @Override  
  23.             public void onDestroy() {  
  24.                         // TODO Auto-generated method stub                 
  25.                         Toast.makeText(getApplicationContext(), "Service is destroyed",1).show();                
  26.                         super.onDestroy();  
  27.             }  
  28.    
  29.             @Override  
  30.             public int onStartCommand(Intent intent, int flags, int startId) {  
  31.                         // TODO Auto-generated method stub                 
  32.                         Toast.makeText(getApplicationContext(), " abhijeet's Service is working",1).show();  
  33.                         return super.onStartCommand(intent, flags, startId);  
  34.             }  
  35. }   

Output

Step 1: Run the Application.

Running Application on Android

Step 2: Click on the back button.

Clicking on Back Button

Step 3: Go to Settings.

Settings on Android App

Step 4: Go to Data Usage and turn on the mobile data. We can see that the service is working. It is due to the action used in the receiver.

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"   /> 

Data Usage of Android App