Bar*_*ica 16 android broadcastreceiver android-intent android-pendingintent
我正在尝试通过PendingIntent一些额外的数据发送,例如:
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);
Run Code Online (Sandbox Code Playgroud)
然后在Broadcast尝试捕获数据:
@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....
}
Run Code Online (Sandbox Code Playgroud)
我看到Broadcast onReceive()被叫 - 这意味着Broadcast以适当的方式注册,但仍然是额外的空.
有任何想法吗?
om2*_*345 37
将您正在使用的意图中的数据作为Extras放在待处理的意图中.您将在接收onReceive方法中获得此意图BroadCast.尝试定义Pending意图如下.
PendingIntent sentPI = PendingIntent.getBroadcast(activity, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);
Run Code Online (Sandbox Code Playgroud)
小智 11
如未决意图所述:
由于这种行为,重要的是要知道两个Intent何时被认为是相同的,以便检索PendingIntent.人们常犯的一个错误是使用Intents创建多个PendingIntent对象,这些对象只在其"额外"内容中有所不同,期望每次都获得不同的PendingIntent.这并没有发生.用于匹配的Intent部分与定义的部分相同
Intent.filterEquals.如果你使用两个相同的Intent对象Intent.filterEquals,那么你将获得两个相同的PendingIntent.有两种典型的方法可以解决这个问题.
如果您确实需要多个不同的PendingIntent对象同时处于活动状态(例如用作同时显示的两个通知),那么您需要确保有一些不同的东西将它们与不同的关联起来PendingIntents.这可以是任何所考虑的意图属性的
Intent.filterEquals供给,或不同的请求码的整数getActivity(Context, int, Intent, int),getActivities(Context, int, Intent\[\], int),getBroadcast(Context, int, Intent, int),或getService(Context, int, Intent, int).如果您一次只需要一个PendingIntent激活您将使用的任何Intent,那么您也可以使用这些标志
FLAG_CANCEL_CURRENT或FLAG_UPDATE_CURRENT取消或修改当前PendingIntent与您提供的Intent相关联的任何内容.
| 归档时间: |
|
| 查看次数: |
30506 次 |
| 最近记录: |