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)
答案 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
,您可以更改它,如果请求代码不同,系统会将其视为不同的待处理意图。