0

我正在尝试创建将使用警报管理器设置的意图。目前,我可以用一个意图来执行此操作,向其中添加额外的数据(字符串,但我将它们作为一个带有分隔符的字符串发送),一切正常并在正确的时间关闭。但是,当我尝试像这样发送多个意图时,它们会被覆盖,并且只有一个在正确的时间发出。我如何构建我的意图,使它们看起来与警报管理器不同(我认为它们在运行 filterIntent() 时会被删除)。

长话短说-putExtra() 使所有意图看起来仍然相同......我怎样才能让它们看起来不同,这样它们就不会被删除(并跟踪它们以防我想删除特定的意图)

4

2 回答 2

0

这就是我为我的小部件安排更新的方式。每个都允许是唯一的,因为它们具有唯一的小部件 ID 号。

Intent widgetUpdate = new Intent();
widgetUpdate.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
widgetUpdate.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { appWidgetId });
widgetUpdate.putExtra(EXTRA_POSITION,0);
widgetUpdate.putExtra(EXTRA_URL, URL);
// make this pending intent unique by adding a scheme to it
widgetUpdate.setData(Uri.withAppendedPath(Uri.parse(URI_SCHEME + "://widget/id/"), String.valueOf(appWidgetId)));
PendingIntent newPending = PendingIntent.getBroadcast(context, 0, widgetUpdate, PendingIntent.FLAG_UPDATE_CURRENT);
// schedule the updating
AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarms.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), updateRateSeconds * 1000, newPending);
于 2010-08-07T03:14:27.377 回答
0

根据文档,使用.AlarmManager检查两个Intents 是否等效filterEquals()。查看文档filterEquals()以了解它如何确定两个Intents 是否相等。此外,chris324的解决方案是一个非常好的解决方案。

于 2010-08-07T12:12:38.453 回答