是否有可能获得特定警报的时间?
Is it possible to get the time of a specific alarm?
我正在为 Android(学习目的)开发活动策划工具,并希望每个活动都有自己的提醒。我已经让闹钟正常工作,它们成功触发并知道如何检查闹钟是否存在,但我无法找到如何获取每个闹钟的时间。
我已经设法通过以下方式确定警报是否存在:
Intent i = new Intent(getApplicationContext(), NotificationReceiver.class);
pIntent = PendingIntent.getBroadcast(getApplicationContext(), (int) id, i, PendingIntent.FLAG_NO_CREATE);
我试过使用
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar test = Calendar.getInstance();
test.setTimeInMillis(am.getNextAlarmClock().getTriggerTime());
Log.d(TAG, "getReminder: TRIGGER: " + test.getTime());
但是那里显示的时间甚至与我测试时的任何闹钟都不匹配。此外,这不允许我确定警报属于哪个事件。
这是我创建提醒的地方。
public void makeReminder(String event, long reminder){
Log.d(TAG, "makeReminder: Started");
Intent i = new Intent (getApplicationContext(), NotificationReceiver.class);
i.putExtra("id", event); // eventID
i.putExtra("reminder", reminder); // reminderKey
i.putExtra("reminderTime", reminderCal.getTimeInMillis()); // actual time for the reminder
i.putExtra("message", "You have an upcoming event on " + dateTimeFormat.format(startCal.getTime()));
i.putExtra("name", eventName);
i.putExtra("channel", "event");
PendingIntent nIntent = (PendingIntent) PendingIntent.getBroadcast(
getApplicationContext(),
(int)reminder, i,
PendingIntent.FLAG_CANCEL_CURRENT
);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, reminderCal.getTimeInMillis(), nIntent);
Log.d(TAG, "makeReminder: reminder set for " + reminderCal.getTime());
Log.d(TAG, "makeReminder: reminderID: " + reminder);
}
我不确定如何继续获取时间,但我希望可以使用 reminderKey 获取触发时间,或者在事件实际触发之前从意图中获取 reminderTime。重点是让用户查看是否设置了警报,何时设置,然后我知道如何取消或更改警报。只是找不到好的展示方式。
希望是一些容易实现的东西,我忽略了 :/ 但似乎无法解决这个问题。
您无法从 AlarmManager
获取此信息。如果您需要这些信息,您将需要将其保存在一些持久性存储(SQLite 数据库、SharedPreferences、文件等)中并自行管理。
我正在为 Android(学习目的)开发活动策划工具,并希望每个活动都有自己的提醒。我已经让闹钟正常工作,它们成功触发并知道如何检查闹钟是否存在,但我无法找到如何获取每个闹钟的时间。
我已经设法通过以下方式确定警报是否存在:
Intent i = new Intent(getApplicationContext(), NotificationReceiver.class);
pIntent = PendingIntent.getBroadcast(getApplicationContext(), (int) id, i, PendingIntent.FLAG_NO_CREATE);
我试过使用
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar test = Calendar.getInstance();
test.setTimeInMillis(am.getNextAlarmClock().getTriggerTime());
Log.d(TAG, "getReminder: TRIGGER: " + test.getTime());
但是那里显示的时间甚至与我测试时的任何闹钟都不匹配。此外,这不允许我确定警报属于哪个事件。
这是我创建提醒的地方。
public void makeReminder(String event, long reminder){
Log.d(TAG, "makeReminder: Started");
Intent i = new Intent (getApplicationContext(), NotificationReceiver.class);
i.putExtra("id", event); // eventID
i.putExtra("reminder", reminder); // reminderKey
i.putExtra("reminderTime", reminderCal.getTimeInMillis()); // actual time for the reminder
i.putExtra("message", "You have an upcoming event on " + dateTimeFormat.format(startCal.getTime()));
i.putExtra("name", eventName);
i.putExtra("channel", "event");
PendingIntent nIntent = (PendingIntent) PendingIntent.getBroadcast(
getApplicationContext(),
(int)reminder, i,
PendingIntent.FLAG_CANCEL_CURRENT
);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, reminderCal.getTimeInMillis(), nIntent);
Log.d(TAG, "makeReminder: reminder set for " + reminderCal.getTime());
Log.d(TAG, "makeReminder: reminderID: " + reminder);
}
我不确定如何继续获取时间,但我希望可以使用 reminderKey 获取触发时间,或者在事件实际触发之前从意图中获取 reminderTime。重点是让用户查看是否设置了警报,何时设置,然后我知道如何取消或更改警报。只是找不到好的展示方式。
希望是一些容易实现的东西,我忽略了 :/ 但似乎无法解决这个问题。
您无法从 AlarmManager
获取此信息。如果您需要这些信息,您将需要将其保存在一些持久性存储(SQLite 数据库、SharedPreferences、文件等)中并自行管理。