-1

I want to Send and receive sms from our App and sending get successful but receiving shows deprecation in SmsMessage Class of my code which is demonstrated by my websites on the web. So, I want a receive methodology for SMS receiving which is not deprecated. Please suggest me for the right solution.

Receiving Code:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.gsm.SmsMessage;
import android.widget.Toast;

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 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();
        }                         
    }
}
Sanat Pandey
  • 4,081
  • 17
  • 75
  • 132

2 Answers2

3

import android.telephony.gsm.SmsMessage;

The above should be changed to:

import android.telephony.SmsMessage;

Reed
  • 14,703
  • 8
  • 66
  • 110
  • And FYI, the `telephony.gsm.SmsMessage` was for when you had to specify between CDMA and GSM phones. Now you need not specify `.gsm` or `.cdma`, since Android got smarter. – Reed Apr 06 '12 at 03:11
1

Add BROADCAST_SMS permission to your receiver and make enable and exported true:

<receiver android:name="com.mohamedtest.sendandreceivesms_m.SMSReceiver"
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.BROADCAST_SMS">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
        </intent-filter>
    </receiver>
halfer
  • 19,824
  • 17
  • 99
  • 186
m0haMed
  • 420
  • 5
  • 7