我试图循环发送大量短信,对于每条消息,我需要注册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);
注意:
要为问题添加更多上下文:
上面的代码在AsyncTask类内部。多次调用该任务以异步发送多个消息。
我尝试将消息ID作为额外的消息发送到sendIntent,并在onReceive内接收它(类似于Girish的回答),但实际上我只重复接收到一个值。
答案 0 :(得分:0)
在创建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);
}