在下面的代码消息中是一个Message类数组,其中包含100多个phonenumbers和sms消息。
for(Message msg: message) {
String msgString = msg.getSMSText1() + " " + msg.getTransporterNo() + "\n" + msg.getSMSText2();
smsManager.sendTextMessage(msg.getPhoneNo(), null, msgString, piSent, null);
}
此代码用于在发送消息后接收广播:
PendingIntent piSent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), PendingIntent.FLAG_UPDATE_CURRENT);
BroadcastReceiver smsSentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String result = "";
switch(getResultCode()) {
case Activity.RESULT_OK:
result = "Transmission successful";
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
result = "Transmission failed";
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
result = "Radio off";
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
result = "No PDU defined";
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
result = "No service";
break;
}
Toast.makeText(getApplicationContext(), result,
Toast.LENGTH_SHORT).show();
}
};
registerReceiver(smsSentReceiver, new IntentFilter("SMS_SENT"));
有没有办法在smsManager.sendTextMessage期间传递其他数据?我想传递其他数据,如message_id和phonenumber,以便我可以找出哪条消息是否成功。
答案 0 :(得分:0)
您可以在Intent
对象上附加必要的数据作为附加内容。例如:
Intent sentIntent = new Intent("SMS_SENT");
sentIntent.putExtra("message_id", id);
sentIntent.putExtra("phone_number", number);
PendingIntent piSent = PendingIntent.getBroadcast(this, 0, sentIntent, PendingIntent.FLAG_UPDATE_CURRENT);
然后,您可以从传递到Intent
的{{1}}方法的onReceive()
中检索它们:
BroadcastReceiver
另外,正如David Wasser在下面提醒我的那样,为了确保每次循环都会发出新的int id = intent.getIntExtra("message_id", -1);
String number = intent.getStringExtra("phone_number");
,您需要为每个提供唯一的请求代码 - {{{{ 1}}打电话。如果消息ID是唯一的,您可以使用它们。否则,循环计数器就足够了。