如何通过PendingIntent发送数据进行广播? [英] How to send data through PendingIntent to Broadcast?

查看:687
本文介绍了如何通过PendingIntent发送数据进行广播?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过PendingIntent发送一些额外的数据,例如:

I'm trying to send via PendingIntent some extra data, like:

MyMessage message;
//...
Intent intent;
SmsManager sms = SmsManager.getDefault();
intent = new Intent(Constants.SENT_PLAIN);
intent.putExtra(Constants.EXTRA_RAW_ID, message.getId()); //putting long id (not -1L)
PendingIntent sentPI = PendingIntent.getBroadcast(activity, 0, intent, 0);
intent = new Intent(Constants.DELIVERED_PLAIN);
intent.putExtra(Constants.EXTRA_RAW_ID, message.getId());
PendingIntent deliveredPI = PendingIntent.getBroadcast(activity, 0, intent, 0);
sms.sendTextMessage(phoneNumber, null, message.getBody(), sentPI, deliveredPI);

然后在Broadcast中尝试捕获数据:

Then in Broadcast trying to catch data:

@Override
public void onReceive(Context context, Intent intent) {
    String message, prefix = "";
    String action = intent.getAction();
    long id = intent.getLongExtra(Constants.EXTRA_RAW_ID, -1L);  //here I receive id=-1

    // blah-blah.... 
}

我看到Broadcast onReceive()被称为-表示Broadcast以正确的方式注册,但其他内容仍然为空.

I see that Broadcast onReceive() called - which means that Broadcast registered in a proper way, but still extras are empty.

有什么想法吗?

推荐答案

将您正在使用的意图中的数据放入Extras中. 您可以在BroadCast接收器的onReceive方法中获得此意图. 尝试如下定义待处理的意图.

Put data in intent you are using in pending intent as Extras. You will get this intent in onReceive Method of BroadCast receiver. Try to define Pending intent as below.

PendingIntent sentPI = PendingIntent.getBroadcast(activity, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);

这篇关于如何通过PendingIntent发送数据进行广播?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆