1

我正在尝试获取在特定时间触发的通知。我突然想到我不必使用警报管理器,因为我有设置时间的“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 说我不能将 fireTime 换成 alCal,所以我不知道接下来要尝试什么。

4

1 回答 1

0

我突然想到我不必使用警报管理器

是的,你会的。

因为我有设置时间的“alCal”变量。

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

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

打电话getTimeInMillis()

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

于 2012-04-22T10:38:53.070 回答