2012-04-12 54 views
4

我注意到,通过Android中的标准SmsManager发送的跟踪未决意图似乎并未保留其中的额外信息。例如:跟踪在Android中发送的短信

Intent sentIntent = new Intent(SENT); 
sentIntent.putExtra("value1", "foo"); // <- note this value 
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, sentIntent, 0); 

SmsManager sms = SmsManager.getDefault(); 
sms.sendTextMessage(numberToSendTo, null, mMessageToSend, sentPI, null); 

//... in the broadcastReceiver that catches the SENT intent ... 
public void onReceive(Context arg0, Intent arg1) { 

    arg1.getExtras().getString("value1"); // <- nothing, no such key 
} 

有人可以测试了这一点,在这种行为意图,我做错了,或者这是Android予以备案的错误?

+0

代码将intent对象封装到PendingIntent对象中。代码将价值放在intent对象中,而不是挂起的Intent对象。所以我怀疑你在onReceive方法中得到的是同一个intent对象或PendingIntent类的Object。 – Relsell 2012-04-12 06:17:30

回答

1

尝试在创建PendingIntent时添加标记FILL_IN_SELECTOR(有关标记及其一般行为,请参阅PendingIntent.getBroadcast的规范)。这应该会迫使PendingIntent接受来自Intent的所有顶级附加服务。