1
我用putExtra(String,String)
將數據傳遞給廣播接收器,但問題是,幾秒鐘之後,發送第二短信至不同的名稱和號碼時,姓名和電話號碼沒有改變來自第一條短信。將數據傳遞到廣播接收器用於SMS傳遞報告從活動
當我等待很長一段時間,併發送短信,姓名和號碼已更改爲正確的姓名和號碼。爲什麼?
如何解決這個問題?
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);
廣播接收器
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;
}
}
}