Reputation: 569
from activity i used putExtra(String,String)
to pass data to broadcast receiver, but the problem was that the name and the phone number was not changing when sending second SMS to different name and number after few seconds from the first SMS.
when i wait long time and send SMS, the name and number was changed to the correct name and number. why?
How to fix this problem?
SmsManager SM1=SmsManager.getDefault();
ArrayList<String> parts = SM1.divideMessage("Hello");
ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();
size=parts.size();
for (int i=1;i<=size;i++) {
Intent in=new Intent("package.DeliveryReport.SMS_DELIVERED");
in.putExtra("package.DeliveryReport.name", name);
in.putExtra("package.DeliveryReport.phoneNumber", phoneNumber);
deliveryIntents.add(PendingIntent.getBroadcast(this, 0,
in, 0));
}
SM1.sendMultipartTextMessage(phoneNumber,null,parts,sentIntents,deliveryIntents);
The Broadcast receiver
public class DeliveryReport extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("package.DeliveryReport.SMS_DELIVERED"))
{
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
switch (getResultCode())
{
case Activity.RESULT_OK:
vibrator.vibrate(500);
Toast.makeText(context, "SMS DELIVERED to "+intent.getStringExtra("package.DeliveryReport.name")+
" phone "+intent.getStringExtra("package.DeliveryReport.phoneNumber"),Toast.LENGTH_SHORT).show();
break;
case Activity.RESULT_CANCELED:
vibrator.vibrate(500);
Toast.makeText(context, "SMS did not DELIVERED to "+intent.getStringExtra("package.DeliveryReport.name")+
" phone "+intent.getStringExtra("package.DeliveryReport.phoneNumber"),Toast.LENGTH_SHORT).show();
break;
}
}
}
Upvotes: 2
Views: 818
Reputation: 569
All i needed was to add PendingIntent.FLAG_ONE_SHOT
Intent in=new Intent("package.DeliveryReport.SMS_DELIVERED");
in.putExtra("package.DeliveryReport.name", name);
in.putExtra("package.DeliveryReport.phoneNumber", phoneNumber);
deliveryIntents.add(PendingIntent.getBroadcast(this, 0,
in, PendingIntent.FLAG_ONE_SHOT));
Upvotes: 2