2011-09-24 68 views
5

我知道如何在點擊事件後X毫秒開始通知。這樣如何開始自定義日期和時間的通知?

 Timer timer = new Timer(); 
     TimerTask timerTask = new TimerTask() { 
      @Override 
      public void run() { 
       triggerNotification(); 
      } 
     }; 
     timer.schedule(timerTask, 3000); 

A碼凡通知代碼看起來像這樣

CharSequence title = "Hello"; 
CharSequence message = "Hello, Android!"; 

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
Notification notification = new Notification(R.drawable.icon, "A New Message!", System.currentTimeMillis()); 

Intent notificationIntent = new Intent(this, AndroidAlarmService.class); 
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 

notification.setLatestEventInfo(AndroidAlarmService.this, title, message, pendingIntent); 
notification.defaults = Notification.DEFAULT_SOUND; 
notification.flags |= Notification.FLAG_AUTO_CANCEL; 
notificationManager.notify(NOTIFICATION_ID, notification); 

我怎樣才能設置通知出現在特定的時間特定的日期,說10月1日下午7點?

回答

16

我認爲最好的方法是創建一個服務來設置通知,然後使用AlarmManager激活服務。
這是我的代碼。 這對於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); 
     } 

這裏是服務:

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

什麼可以作爲是否'bergnam'在10月1日下午7點說,'when'變量的結構? 'long when = 01/10/2011 7 PM;'? – androniennn

+0

@bergnam只需簡單地使用Date對象設置日期,然後調用.getTime() – eladrich

+0

'SimpleDateFormat dateLongue = new SimpleDateFormat(「DD MM yyyy HH:mm:ss」);'以及如何以及爲什麼調用.getTime? – androniennn

相關問題