首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓PendingIntent Extra

安卓PendingIntent Extra
EN

Stack Overflow用户
提问于 2012-03-15 00:24:01
回答 1查看 6.5K关注 0票数 11

我正在尝试从Android应用程序发送短信。我正在使用PendingIntent,这样我就可以使用广播接收器来检查它是否发送正常。由于sendTextMessage调用将针对每条短信进行,因此我需要发送一些“额外”数据来识别实际的短信,以便我的广播接收可以对特定的短信进行一些工作。

下面是我的发送代码:

代码语言:javascript
复制
        String SENT = "SMS_SENT";

        Intent sentIntent = new Intent(SENT);
        sentIntent.putExtra("foo", "BAR");
        PendingIntent sentPI = PendingIntent.getBroadcast(baseContext, 0,
            sentIntent, 0);

        PendingIntent deliveredPI = PendingIntent.getBroadcast(baseContext, 0,
            new Intent(DELIVERED), 0);

        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(smsMessage.getNumber(), null, smsMessage.getText(), sentPI, deliveredPI); 

问题是,在我的BroadCast接收器中,它似乎无法读取我额外的"foo":

代码语言:javascript
复制
    public class SMSSentBroadcastReceiver extends BroadcastReceiver {

   @Override
       public void onReceive(Context arg0, Intent intent) {
       String smsID = intent.getStringExtra("foo");
       ......
       }
    }

smsID就会变成null。

我的广播接收器是这样注册的:

代码语言:javascript
复制
baseContext.registerReceiver(new SMSSentBroadcastReceiver(), new IntentFilter("SMS_SENT"));

考虑到意图过滤器正在工作,我做错了什么?为什么不把额外的也送来呢?

任何帮助都是非常感谢的。谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-03-15 00:46:53

我怀疑(至少在我身上发生过),您之前在其他地方使用了SMS_SENT intent,因此在那个时候,该intent在额外的部分中没有"foo“。使用相同的意图和请求代码调用PendingIntent.getBroadcast将返回原始挂起的意图。

如果它实际上意味着相同的意图,那么您需要使用PendingIntent.FLAG_UPDATE_CURRENT之类的东西来使用新的额外内容来更新意图。如果它不应该是相同的意图,那么它应该有一个不同的请求代码,这样它就不会与另一个意图相匹配(这就是为什么输入一个唯一的请求代码有效)。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9705899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档