I am sending an sms from within the app and I am able to do so. the problem is the pending intent for broadcast of either send/delivered is not getting called. Do I require to put anything more?
Please check my code here:
Android Manifest
<uses-feature android:name="android.provider.Telephony" android:required="true"/>
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<receiver
android:name=".receivers.SentReceiver">
<intent-filter>
<action android:name="sms.SENT" />
</intent-filter>
</receiver>
Pending Intent
PendingIntent.getBroadcast(this, messageId, new Intent("sms.SENT"), PendingIntent.FLAG_UPDATE_CURRENT);
Sending the sms
private void sendSms(Message msg, Uri smsUri, int messageId) {
SmsManager smsManager = SmsManager.getDefault();
// set up sent and delivered pending intents to be used with message request
PendingIntent sentPI = view.getSentPendingIntent(smsUri, messageId);
PendingIntent deliveredPI = view.getDeliveredPendingIntent(smsUri, messageId);
// divide the long text of sms into parts as it can be more than 160 Char
ArrayList<String> parts = smsManager.divideMessage(msg.getMsg());
// so as we need different reports for different sms
ArrayList<PendingIntent> sPI = new ArrayList<>();
ArrayList<PendingIntent> dPI = new ArrayList<>();
for (String part : parts) {
sPI.add(sentPI);
dPI.add(deliveredPI);
}
// send SMS
try {
smsManager.sendMultipartTextMessage(msg.getTitle(), null, parts, sPI, dPI);
} catch (Exception e) {
Log.e(TAG, "exception thrown", e);
}
}
Receiver
public class SentReceiver extends BroadcastReceiver {
private static final String TAG = "SentReceiver";
@Override
public void onReceive(Context context, Intent intent) {
// debug point doesn't reach here and logs are also not getting print
String path = intent.getStringExtra(Defaults.IntentKeys.MESSAGE_URI);
Log.e("reached","sent receiver");
}
}
I have debugged this and it is not coming here. Do I need to add something else? - My app is default sms App