我正在创建一个待办事项应用程序,用户可以在其中创建要记住要做的事情的列表。在创建列表中的每个实例时,我设置了一个警报,在达到条目截止日期时响起。警报接收器会创建一个通知,向用户显示截止日期已到。
我遇到的问题是我传递给通知的意图的额外字符串没有正确更新。第一个警报功能很好,但是我在第一个之后创建的每个条目都会获得与第一个相同的额外字符串。
我设置闹钟的代码如下:
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, DeadlineActivator.class);
intent.setAction("todo" + System.currentTimeMillis());
intent.putExtra("todoname", name);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
(int)System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, deadline.getTime(), pendingIntent);
不知道它是否有任何帮助,但条目的名称是唯一的
警报的 onRecieve 方法如下所示
public void onReceive(Context context, Intent intent)
{
String todoName = intent.getStringExtra(ToDoItem.TODONAME);
NotificationManager nm = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent onClickIntent = new Intent(context, WatchToDo.class);
onClickIntent.putExtra(Auth.TARGET_TODO, todoName);
PendingIntent pIntent = PendingIntent.getActivity(context, 0, onClickIntent, 0);
String body = "Deadline of " + todoName + " has been reached";
String title = "Deadline reached";
Notification n = new Notification.Builder(context)
.setContentTitle(title)
.setContentText(body)
.setSmallIcon(R.drawable.ic_launcher)
.setContentIntent(pIntent)
.setAutoCancel(true)
.build();
nm.notify(NOTIFICATION_ID, n);
}
调试时,我看到创建警报意图时使用的名称 var 具有正确的值。然而, onRecieve 中的 todoName 变量不断获取旧值。