Thursday 16 October 2014

Receing and Diplay for incoming sms using broadcastreceiver


                                            Read and Display an Incoming SMS-Android Phones

User Define in Manifest :-
    Declare receiver in AndroidManifest

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

   SMS permission in AndroidManifest

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

Complete code for AndroidManifest.xml File :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidexample.broadcastreceiver"
    android:versionCode="1"
    android:versionName="1.0" >
       
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.androidexample.broadcastreceiver.BroadcastNewSms"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       
        <receiver android:name="com.androidexample.broadcastreceiver.IncomingSms">  
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
       
    </application>
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
   
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
   
</manifest>
===================================================================

IncomingSms.java file details :
    I have made broadcast event reciever in this file
     1. Created class IncomingSms with extends BroadcastReceiver class

public class IncomingSms extends BroadcastReceiver

      2. Get the object of SmsManager to find out received sms details

// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();

      3.  Create method receiver()

public void onReceive(Context context, Intent intent)

        4. Get / Read current Incomming SMS data

// Retrieves a map of extended data from the intent.
final Bundle bundle = intent.getExtras();

try {
   
    if (bundle != null) {
       
        final Object[] pdusObj = (Object[]) bundle.get("pdus");
       
        for (int i = 0; i < pdusObj.length; i++) {
           
            SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
            String phoneNumber = currentMessage.getDisplayOriginatingAddress();
           
            String senderNum = phoneNumber;
            String message = currentMessage.getDisplayMessageBody();

            Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message);
           

           // Show alert
            int duration = Toast.LENGTH_LONG;
            Toast toast = Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + message, duration);
            toast.show();
           
        } // end for loop
      } // bundle is null

} catch (Exception e) {
    Log.e("SmsReceiver", "Exception smsReceiver" +e);
   
}
========================================================================
     Complete code for  IncomingSms.java file :

public class IncomingSms extends BroadcastReceiver {
   
    // Get the object of SmsManager
    final SmsManager sms = SmsManager.getDefault();
   
    public void onReceive(Context context, Intent intent) {
   
        // Retrieves a map of extended data from the intent.
        final Bundle bundle = intent.getExtras();

        try {
           
            if (bundle != null) {
               
                final Object[] pdusObj = (Object[]) bundle.get("pdus");
               
                for (int i = 0; i < pdusObj.length; i++) {
                   
                    SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                    String phoneNumber = currentMessage.getDisplayOriginatingAddress();
                   
                    String senderNum = phoneNumber;
                    String message = currentMessage.getDisplayMessageBody();

                    Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message);
                   

                   // Show Alert
                    int duration = Toast.LENGTH_LONG;
                    Toast toast = Toast.makeText(context,
                                 "senderNum: "+ senderNum + ", message: " + message, duration);
                    toast.show();
                   
                } // end for loop
              } // bundle is null

        } catch (Exception e) {
            Log.e("SmsReceiver", "Exception smsReceiver" +e);
           
        }
    }  
}








No comments:

Post a Comment