嗨,我正在通过我的服务中的SmsManager从我的应用程序发送消息,并为要发送和传递的短信注册广播接收器,我希望在消息到达或不到达时更新消息状态。按照现在,我可以通过将带有行ID的Extras放在带有flag的Pending Intent中来发送消息PendingIntent.FLAG_UPDATE_CURRENT。但是,一旦发送了消息,我将只接收广播事件以及最后一行的额外内容,而我无法检索其他行的额外内容。我正在使用PendingIntent.FLAG_UPDATE_CURRENT,这就是为什么其他函数被覆盖的原因,我也检查了其他标志,但没有用。如何在不被覆盖的情况下获得其他行的额外内容?我在服务中发送短信的另一件事是这种方法正确吗?任何建议都会有
很大帮助。
String mSelectionClause = MyContentprovider.STATUS+ " = ?";
String[] mSelectionArgs = {"fail"};
Uri students = MyContentprovider.CONTENT_URI_SENDMSG;
Cursor c = getContentResolver().query(students, null, mSelectionClause, mSelectionArgs, "userphno");
if (c.moveToFirst()) {
do{
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
Intent SENTINTENT=new Intent(SENT);
SENTINTENT.putExtra("id",c.getString(c.getColumnIndex( MyContentprovider._ID)));
SENTINTENT.putExtra("userno", c.getString(c.getColumnIndex( MyContentprovider.USER_PHNO)));
if(c.isLast()){
SENTINTENT.putExtra("lastrow", "true");
}
Intent DELIVEREDINTENT=new Intent(DELIVERED);
DELIVEREDINTENT.putExtra("id",c.getString(c.getColumnIndex( MyContentprovider._ID)));
DELIVEREDINTENT.putExtra("userno", c.getString(c.getColumnIndex( MyContentprovider.USER_PHNO)));
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
SENTINTENT, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
DELIVEREDINTENT, PendingIntent.FLAG_UPDATE_CURRENT);
String msg= c.getString(c.getColumnIndex( MyContentprovider.MESSAGE));
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage( c.getString(c.getColumnIndex( MyContentprovider.USER_PHNO)), null, msg, sentPI, deliveredPI);
在广播接收器中,我在其中存储行的ID,没有太多代码