Friday, 31 May 2013

SIMPLE PROGRAMME ON SMS BROADCAST RECVER IN ANDROID

 SMSReceiver.Java


package com.broadsmsrx;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.PhoneLookup;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;

public class SMSReceiver extends BroadcastReceiver {
    private NotificationManager mManager;
    Cursor c;
    Context context1;

    @Override
    public void onReceive(Context context, Intent intent) {
        context1=context;

        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            Object[] pdus = (Object[])bundle.get("pdus");
            final SmsMessage[] messages = new SmsMessage[pdus.length];
            for (int i = 0; i < pdus.length; i++) {
                messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
            }
            if (messages.length > -1) {
                Log.i("TAG###################################", "Message recieved: " + messages[0].getMessageBody());

                Toast toast = Toast.makeText(context,
                        "from: "+getContactNameFromNumber(messages[0].getOriginatingAddress().toString()).toString()+": " +messages[0].getMessageBody(), Toast.LENGTH_LONG);
                toast.show();
            }
        }
    }
    private String getContactNameFromNumber(String number) {
        // define the columns I want the query to return
        String conname=number;
        Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)); 
        Cursor c = context1.getContentResolver().query(lookupUri, new String[]{PhoneLookup.DISPLAY_NAME}, null, null, null); 
        while(c.moveToNext()){  
            /* If we find a match we put it in a String.*/   
            conname = c.getString(c.getColumnIndexOrThrow(PhoneLookup.DISPLAY_NAME));
        }
        return conname;
    }
}


manifest.xml

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

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".SMSBraodCastReceiverExActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <uses-permission android:name="android.permission.READ_CONTACTS"  />
        <uses-permission android:name="android.permission.RECEIVE_SMS" />       
    </application>

</manifest>

No comments:

Post a Comment