我正在尝试在循环中发送大量sms消息,并且对于每个消息,我需要注册braodcaseReceiver,以检测已发送或已接收状态。
我需要将消息id的值发送到broadcastReceiver,以便能够将该消息标记为已发送。
如何将“id”的值传递给BroadcastReceiver?
代码如下:
...
// message id will be different for each time a message is sent
String id = "101";
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
Intent sentIntent = new Intent(SENT);
Intent deliveredIntent = new Intent(DELIVERED);
PendingIntent sentPI = PendingIntent.getBroadcast(mContext, 0, sentIntent, 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(mContext, 0, deliveredIntent, 0);
mContext.registerReceiver(
new BroadcastReceiver()
{
@Override public void onReceive(Context arg0, Intent intent)
{
//I need to check the id of the message here
switch(getResultCode())
{
case Activity.RESULT_OK:
//updateSmsSentStatus(id);
break;
...
}
unregisterReceiver(this);
}
}, new IntentFilter(SENT));
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(destinationAddress, scAddress, smsMessage, sentPI, deliveredPI);
注意:
要为问题添加更多上下文:
在创建Intent
对象时,您可以将Id存储在Intent
中,如下所示,
Intent sentIntent = new Intent(SENT);
// assuming id is of type int
intent.putExtra("Id", id);
然后在onReceive
方法,
public void onReceive(Context arg0, Intent intent)
{
int id = intent.getIntExtra("Id", -1);
// above -1 default value is returned if "Id" doesn't exist.
//I need to check the id of the message here
switch(getResultCode())
{
case Activity.RESULT_OK:
//updateSmsSentStatus(id);
break;
...
}
unregisterReceiver(this);
}