How to start notification on custom date&time?

后端 未结 1 346
隐瞒了意图╮
隐瞒了意图╮ 2020-12-29 16:05

I know how to start a notification X milliseconds after some click event. A code like this

        Timer timer = new Timer();
        TimerTask timerTask = n         


        
相关标签:
1条回答
  • 2020-12-29 16:33

    I think that the best way will be to create a service that sets the notification and then activate the service using an AlarmManager.
    Here is my code for doing that. That's the code for the AlarmManager:

    private void startAlarm() {
        AlarmManager alarmManager = (AlarmManager) this.getSystemService(this.ALARM_SERVICE);
        Calendar calendar =  Calendar.getInstance();
        calendar.set(int year, int month, int date, int hour, int minute, int second);
        long when = calendar.getTimeInMillis();         // notification time
                Intent intent = new Intent(this, ReminderService.class);
                PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);
                alarmManager.set(AlarmManager.RTC, when, pendingIntent);
            }
    

    Here is the Service:

    public class ReminderService extends IntentService {
        private static final int NOTIF_ID = 1;
    
        public ReminderService(){
            super("ReminderService");
        }
    
        @Override
          protected void onHandleIntent(Intent intent) {
            NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            long when = System.currentTimeMillis();         // notification time
            Notification notification = new Notification(R.drawable.icon, "reminder", when);
            notification.defaults |= Notification.DEFAULT_SOUND;
            notification.flags |= notification.FLAG_AUTO_CANCEL;
            Intent notificationIntent = new Intent(this, YourActivity.class);
            PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent , 0);
            notification.setLatestEventInfo(getApplicationContext(), "It's about time", "You should open the app now", contentIntent);
            nm.notify(NOTIF_ID, notification);
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题