设置在Android中的特定时间触发的通知

时间:2012-04-22 00:08:58

标签: android android-notifications notificationmanager

我正在尝试在特定时间触发通知。我发现我不必使用报警管理器,因为我有“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转换为long,所以我想我必须使用AlarmManager。因此,鉴于上述代码,我如何修改它以便AlarmManger在指定时间触发通知?我是Android和Java的新手,所以我并没有真正看到这个问题。我认为alCal必须在新的Notification调用中调用,但我不知道该怎么做。 Eclipse说我不能只为了alCal交换fireTime,所以我不知道下一步该尝试什么。

1 个答案:

答案 0 :(得分:0)

  

我觉得我不必使用闹钟管理器

是的,你愿意。

  

因为我有" alCal"设定时间的变量。

这是一个java.util.Calendar对象。就其本身而言,它不会在特定时间执行您的代码(例如显示Notification)。

  

是否可以将alCal转换为Long并使用它而不是System.currentTimeMillis();作为fireTime变量?如果是这样,我将如何将alCal转换为Long?

致电getTimeInMillis()

请记住,您的代码不是"设置在Android"中的特定时间触发的通知。它将立即显示Notification,并设置警报以在将来的某个时间调用活动。