如何使用相同的Action创建两个不同的Intent?

时间:2015-01-21 22:42:45

标签: android alarmmanager

Intent中的哪些字段(Action除外)对PendingIntent是唯一的? 我想用相同的Action =" MyName"创建多个Intent实例。 AlarmManager必须是不同的实例。

//Instance 1
Intent intent1=new Intent("MyName");
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, Time1.getTime(), pi);

//Instance 2
Intent intent2=new Intent("MyName");
....
TO-DO Add the difference of the intent2 from the intent1

pi = PendingIntent.getBroadcast(context, 0, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, Time2.getTime(), pi);

将来的AlarmManager.cancel(PendingIntent)

2 个答案:

答案 0 :(得分:1)

根据Intent类的Android Documentation,根据这些规则,它会认为两个意图相等:

  

也就是说,如果他们的行为,数据,类型,类别和类别相同。这不会比较意图中包含的任何额外数据。

为您的意图设置不同的数据参数,它不应该解析为相同的PendingIntent

Intent intent = new Intent("com.package.action");
intent.setData(Uri.parse("scheme://somethingA"));

Intent otherIntent = new Intent("com.package.action");
otherIntent.setData(Uri.parse("scheme://somethingB"));

答案 1 :(得分:0)

getBroadcast()中的第二个参数是requestCode,您可以更改它,如果请求代码不同,系统会将其视为不同的待处理意图。