0

I am making second class SMSReciever which extends Broadcast Reciever. In that I write the code but what to write in activity class?

Cœur
  • 37,241
  • 25
  • 195
  • 267
  • you need to register for incoming sms and as well you need to set permission in android manifest for that – Vipin Sahu Jun 20 '12 at 09:14
  • you can define a listener. look at [this link](http://stackoverflow.com/a/7709140/779408) :) – Bob Jun 20 '12 at 09:02

2 Answers2

0

Here is the code to write in Activity

    receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            final Bundle bundle = intent.getExtras();        
            String str = "";            
            if (bundle != null) {
                //---retrieve the recent SMS message received---
                final Object[] pdus = (Object[]) bundle.get("pdus");
                final SmsMessage[] msgs = new SmsMessage[pdus.length];

                msgs[0] = SmsMessage.createFromPdu((byte[])pdus[0]);
                str += msgs[0].getMessageBody().toString();
                //---display the new SMS message---

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        final TextView smsContent = (TextView) findViewById(R.id.smsContent);
                        smsContent.setText("Message : " + msgs[0].getMessageBody().toString());

                        final TextView smsFrom = (TextView) findViewById(R.id.smsFrom);
                        smsFrom.setText("SMS from : " + msgs[0].getOriginatingAddress());
                    }
                });
            }
        }
    };
    registerReceiver(receiver, new IntentFilter("android.provider.Telephony.SMS_RECEIVED"));

And here is code for SMSReceiver class

@Override
public void onReceive(Context context, Intent intent)  {
    //---get the SMS message passed in---
    final Bundle bundle = intent.getExtras();
    String str = "";

    if (bundle != null) {

        //---retrieve the recent SMS message received---
        final Object[] pdus = (Object[]) bundle.get("pdus");
        final SmsMessage[] msgs = new SmsMessage[pdus.length];

        msgs[0] = SmsMessage.createFromPdu((byte[])pdus[0]);
        str += "SMS from " + msgs[0].getOriginatingAddress();
        str += " :";
        str += msgs[0].getMessageBody().toString();
        str += "\n";

        //---display the new SMS message---
        Toast.makeText(context, str, Toast.LENGTH_LONG).show();
    }
}
Nirali
  • 13,571
  • 6
  • 40
  • 53
0

Please Write Below Code into Your Broadcast Receiver Class and here no launcher activity is required.

@Override
public void onReceive(Context context, Intent intent) {
     //---get the SMS message passed in---
     Bundle bundle = intent.getExtras();        
     SmsMessage[] msgs = null;
     String str = "";            
     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]);                
              str += "SMS from " + msgs[i].getOriginatingAddress();                     
              str += " :";
              str += msgs[i].getMessageBody().toString();
              str += "\n";        
         }
         //---display the new SMS message---
         Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
     }       

}

And Write Below Code into your manifest file.

<application
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
        <receiver android:name="IncomingSmsCaptureApp" >
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
</application>

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