【发布时间】:2014-02-25 06:42:51
【问题描述】:
您好,我正在通过我的服务中的 SmsManager 从我的应用程序发送消息,并为发送和传递的短信注册广播接收器,我想在到达或未到达时更新消息状态。根据现在,我可以通过将带有行 id 的附加内容放入带有标志PendingIntent.FLAG_UPDATE_CURRENT 的待处理意图中来发送消息。但是,一旦发送消息,我就会收到仅包含最后一行附加信息的广播事件,并且我无法检索其他行的附加信息。我正在使用 PendingIntent.FLAG_UPDATE_CURRENT 这就是为什么 extras 被覆盖并且我也检查了其他标志但没有用。如何在不被覆盖的情况下获得其他行的额外内容?我在服务中发送短信的另一件事是这种方法合适吗?任何建议都会
有很大帮助。
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 并没有太多代码
【问题讨论】:
标签: android android-service android-broadcast