Search code examples
androidsmsbroadcastreceiver

Android - Incoming SMS Listener (ICS)


I have created a BroadcastReceiver, which actualy handles incoming SMS. this is code running fine in android 2.3.3 but somehow am not able to run the same code on devices running ICS.

My Receiver

public class SmsListener extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        System.out.println("#### SMS Received");
        if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
            Bundle bundle = intent.getExtras();           //---get the SMS message passed in---
            SmsMessage[] msgs = null;
            String msg_from;
            if (bundle != null){
                //---retrieve the SMS message received---
                try{
                    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]);
                        msg_from = msgs[i].getOriginatingAddress();
                        String msgBody = msgs[i].getMessageBody();
                        System.out.println("#### SMS Received: " + msg_from);
                        System.out.println("#### Message: " + msgBody);
                    }
                }catch(Exception e){
                           Log.d("Exception caught",e.getMessage());
                }
            }
        }
    }
}

Permissions

   <receiver android:name=".SmsListener" android:enabled="true"       android:permission="android.permission.RECEIVE_SMS">
      <intent-filter>
         <action android:name="android.provider.Telephony.SMS_RECEIVED" />
      </intent-filter>
   </receiver>    

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

Solution

  • Actually i got the answer, with the latest security additions now android permits registration of a broadcast receiver only through a visible activity.