Я пытаюсь получить уведомление об увольнении в определенное время. Мне приходит в голову, что мне не нужно будет использовать диспетчер аварийных сообщений, так как у меня есть переменная "alCal", которая устанавливает время. Можно ли преобразовать alCal в Long и использовать его вместо System.currentTimeMillis();
как переменная fireTime? Если да, то как бы преобразовать alCal в Long? Вот мой текущий код:
//---use the AlarmManager to trigger an alarm---
AlarmManager aMan = (AlarmManager) getSystemService(ALARM_SERVICE);
//---get current date and time---
Calendar alCal = Calendar.getInstance();
//---sets the time for the alarm to trigger---
alCal.set(Calendar.HOUR_OF_DAY, 23);
alCal.set(Calendar.MINUTE, 41);
alCal.set(Calendar.SECOND, 00);
Intent noteIntent = new Intent(this, Splash.class);
PendingIntent pendI = PendingIntent.getActivity(this, 0, noteIntent, 0);
long fireTime = System.currentTimeMillis();
String noteBody = "notification body";
String noteTitle = "notification title";
Notification note = new Notification(R.drawable.noteicon, noteTitle, fireTime);
note.setLatestEventInfo(this, noteTitle, noteBody, pendI);
note.defaults = Notification.DEFAULT_SOUND;
noteman.notify(uniqueID, note);
//---sets the alarm to trigger---
aMan.set(AlarmManager.RTC_WAKEUP, alCal.getTimeInMillis(), pendI);
finish();
нормально, похоже, что я не могу преобразовать alCal в длинный, поэтому, я думаю, мне нужно использовать AlarmManager. Итак, учитывая приведенный выше код, как его изменить, чтобы AlarmManger запускает уведомление в указанное время? Я новичок в Android и Java, поэтому на самом деле я не вижу slution. Я бы подумал, что alCal нужно вызвать где-то в новом вызове Notification, но я не знаю, как это сделать. Eclipse говорит, что я не могу просто обменять fireTime на alCal, поэтому я не знаю, что попробовать дальше.
Мне приходит в голову, что мне не нужно будет использовать диспетчер Alarm Manager
Да, вы бы это сделали.
так как у меня есть переменная "alCal", которая устанавливает время.
Это объект java.util.Calendar
. Само по себе он не будет выполнять ваш код (например, отображение Notification
) в определенное время.
Можно ли преобразовать alCal в Long и использовать его вместо System.currentTimeMillis(); как переменная fireTime? Если да, то как бы преобразовать alCal в Long?
Вызовите getTimeInMillis()
.
Имейте в виду, что ваш код не "Установка уведомления для запуска в определенное время в Android". Он немедленно отобразит Notification
, а также установит будильник для вызова активности в определенное время в будущем.
PendingIntent
с AlarmManager
который вызывает что-то другое (например, BroadcastReceiver
), что, в свою очередь, вызывает Notification
.
alCal.getTimeInMillis
... Ваш вопрос?