Showing posts with label Broadcast. Show all posts
Showing posts with label Broadcast. Show all posts

Monday, July 8, 2013

BOOT_COMPLETED BroadcastReceiver In Android

Android BootReciever


Many a time We need to perform some task when Device/Mobile finish it's booting process.
For Example giving notification that "SIM has been Changed" etc.

For this we need a Broadcast  receiver that should receive "BOOT_COMPLETED" broadcast. We must know  that when a device finishes booting Android System sends "BOOT_COMPLTED" broadcast.

Registering the BootReciever in android manifest file


<receiver android:name=".BootReceiver">
                        <intent-filter>
                                <action android:name="android.intent.action.BOOT_COMPLETED" />
                                <category android:name="android.intent.category.HOME" />
                        </intent-filter>
   </receiver>



and do not forget to add the following permission in manifest .

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

this permission is required to listen/reverie the BOOT_COMPLETED action



BootRecieAndroidvr In

BootReceiver.java  

 

public class BootReceiver extends BroadcastReceiver
{
      
            public void onReceive(Context context, Intent intent)
            {
               
                   // Your code to execute when Boot Completd

                   Toast.makeText(context, "Booting Completed", Toast.LENGTH_LONG).show();
            }
}
                     
           
The onRecieve() method of BootReceiver will execute when boot completes, so wee need to write the code inside onReceive() method.





Monday, June 24, 2013

Detect Missed Call In Android

How to detect a Missed Call in Android



Prerequisite:You should know how to handle Incoming Call. if not, read the post  Handle Incomig Calls using BroadCastReceiver

How to approach :
whenever there as an incoming Phone goes in "RINGING" state, and if the person has not picked/received the call Phone Rings till a particular time and then goes in "IDLE" state.   So we have to monitor the Phone State and check the State accordingly.

Permission Required: 

Following permission is required to listen/monitor the Phone State.
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Declare the above permission in manifest file.

Listening Phone State:


We use a BroadcastReceiver class that will monitor the Phone State, whenever there is a change in Phone State, the onReceive() method of BroadcasrReceiver will be called, and in onReceivee(),  we check for the condition, See the Code below

do not forget to register the BroadcastReceiver in manifest  (see the manifest file at the bottom )


IncommingCallReceiver.java


public class IncommingCallReceiver extends BroadcastReceiver
 {
   
      static boolean ring=false;
      static boolean callReceived=false;
     
     
      @Override
      public void onReceive(Context mContext, Intent intent)
      {
         
             // Get the current Phone State
            String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
           
            if(state==null)
                return;

            // If phone state "Rininging"
            if(state.equals(TelephonyManager.EXTRA_STATE_RINGING))
            {           
                      ring =true;
                     // Get the Caller's Phone Number
                     Bundle bundle = intent.getExtras();
                     callerPhoneNumber= bundle.getString("incoming_number");
              }



             // If incoming call is received
            if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK))
             {
                    callReceived=true;
              }


             // If phone is Idle
            if (state.equals(TelephonyManager.EXTRA_STATE_IDLE))
            {
                      // If phone was ringing(ring=true) and not received(callReceived=false) , then it is a missed call
                       if(ring==true&&callReceived==false)
                       {
                                Toast.makeText(mContext, "It was A MISSED CALL from : "+callerPhoneNumber, Toast.LENGTH_LONG).show();
                       }
          }
       
}






 Your manifest should look like follows

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.missedcall"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />
   
       <!--  declare the permission -->
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
   

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
              
        <!-- Register the Broadcast receiver  -->
        <receiver android:name=".IncommingCallReceiver" android:enabled="true">
            <intent-filter>
                    <action android:name="android.intent.action.PHONE_STATE" />
                </intent-filter>
           </receiver>
    </application>

</manifest>






Monday, June 3, 2013

Boot Reciever in Android

Android BootReciever


Many a time We need to perform some task when Device/Mobile finish it's booting process.
For Example giving notification that "SIM has been Changed" etc.

For this we need a Broadcast  receiver that should receive "BOOT_COMPLETED" broadcast. We must know  that when a device finishes booting Android System sends "BOOT_COMPLTED" broadcast.

Registering the BootReciever in android manifest file


<receiver android:name=".BootReceiver">
                        <intent-filter>
                                <action android:name="android.intent.action.BOOT_COMPLETED" />
                                <category android:name="android.intent.category.HOME" />
                        </intent-filter>
   </receiver>



and do not forget to add the following permission in manifest .

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

this permission is required to listen/reverie the BOOT_COMPLETED action



BootRecieAndroidvr In

BootReceiver.java  

 

public class BootReceiver extends BroadcastReceiver
{
      
            public void onReceive(Context context, Intent intent)
            {
               
                   // Your code to execute when Boot Completd

                   Toast.makeText(context, "Booting Completed", Toast.LENGTH_LONG).show();
            }
}
                     
           
The onRecieve() method of BootReceiver will execute when boot completes, so wee need to write the code inside onReceive() method.





Wednesday, May 1, 2013

Broadcast Reciever in Android


Broadcast  Reciever

A broadcast receiver listens for relevant broadcast messages to trigger an event. Some
examples of broadcasted events already sent from the OS are

Battrey Low
SMS Recieved
Boot Completed   etc


Type of Broadcasts: 

  • Normal broadcasts are completely asynchronous. All receivers of the broadcast are run in an undefined order, often at the same time.
  • Ordered broadcasts are delivered to one receiver at a time. As each receiver executes in turn, it can propagate a result to the next receiver, or it can completely abort the broadcast so that it won't be passed to other receivers. The order receivers run in can be controlled with the android:priority attribute of the matching intent-filter; receivers with the same priority will be run in an arbitrary order. 

Registering Broadcast Receivers in  Manifest  file


All Broadcast Receivers must be registered in Android Manifest file.

here I will discuss about two Broadcast

BOOT_COMPLETED   :  is delivered when device finish Booting process  
SMS_RECEIVED      :   is delivered when da new SMS is Recieved.

BOOT_COMPLETED


 <receiver android:name=".BootReceiver">
                        <intent-filter>
                                <action android:name="android.intent.action.BOOT_COMPLETED" />
                                <category android:name="android.intent.category.HOME" />
                        </intent-filter>
   </receiver>


SMS_RECEIVED



 <receiver android:name=".SMSReciever">
            <intent-filter  android:priority="1000">
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
              
            </intent-filter>

 </receiver>


We  also need to declare following permission  in manifest  to Receive these Broadcasts

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


Now we need to create  Java class to handle these events.
For this we need to Extend  BroadcastReceiver    class and override   onReceive()  method.

inside onReceive() method we write the code to handle the events  like  when a new SMS received or Device  finish Booting Process.

BroadcastReceiver Example:

In this example we have cerated a BroadcastReceiver which will receive the SMS

first we Implement SMSReciever class
in this , we will extract the Message Body and the Senders Contact Number from received SMS

here variable  messageReceived will contain the message body.

BroadCastReceiver Class


public class SmsReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        //---get the SMS message passed in---
        Bundle bundle = intent.getExtras();        
        SmsMessage[] msgs = null;
        String messageReceived = "";            
        if (bundle != null)
        {
            //---retrieve the SMS message received---
           Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length];            
            for (int i=0; i<msgs.length; i++){
                msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                
                messageReceived += msgs[i].getMessageBody().toString();
                messageReceived += "\n";        
            }
            //---display the new SMS message---
            Toast.makeText(context, messageReceived, Toast.LENGTH_SHORT).show();
        }                         
    }
}
  
To get the Sender's Number use 
msgs.getOriginatingAddress ()     
 
 
More Post  following:  
1: Configuring Eclipse for Android Development 2: Understanding Android Manifest File of your android app 3: Understanding Layouts in Android 4: Using Buttons and EditText in Android  5:  Using CheckBoxes in Android  6:  Sending Data from One Activity to Other in Android 7: Using AutoCompleteTextView in Android 8: How to Send SMS in Android 9  How To Receive SMS 10: Notifications In Android 11: How To Vibrate The Android Phone 12: Working With Alert Dialog 13: Adding Radio Buttons In Dialog 14:  Adding Check Boxes In Dialog 15: Creating Customized Dialogs in Android 16: Using TimePickerDialog and DatePickerDialog In android 17: Using Telephony Manager In Android 18: How To Handle Incoming Calls in Android 19: How to Forward an Incoming Call In Android 20 :Working With Menu: Creating Option Menu 21: Working With Menu: Creating Context Menu In Android