2012-07-04 55 views
0

我幾乎到處都看了!我無法找到任何幫助或教程,或者每週,每小時或每月發出通知觸發的示例。我聽說過有關使用AlarmManager的一些信息,但我無法正常工作。有每小時/每週/等等...通知提醒(帶有AlarmManager?)

我還沒有用Java很多(更多的是一個Objective-C的傢伙),但我在這個通知系統有一些麻煩。基本上我只想擁有一個按鈕,當我切換時會每週通知用戶重新打開應用程序(例如)。當然,如果他們不希望每週都收到通知,請打開應用程序。無論如何,有什麼想法?我已經想出瞭如何在一般情況下獲得通知,但是我無法讓它延遲,或者在應用程序未打開時發生。

謝謝!

回答

3
Calendar calendar = Calendar.getInstance(); 

    // 8 AM Each day 
    calendar.set(Calendar.HOUR_OF_DAY, 8); 
    calendar.set(Calendar.MINUTE, 0); 
    calendar.set(Calendar.SECOND, 0); 
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
    PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyClass.class), PendingIntent.FLAG_UPDATE_CURRENT); 
    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi); 

這將在每天上午8點發出警報。同樣,您可以設置任意一天的鬧鐘。

心得體會:

NotificationManager nm; 
    nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);   
    CharSequence from = "VIPUL"; 
    CharSequence message = "Crazy About Android..."; 
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, 
    new Intent(), 0); 
    Notification notif = new Notification(R.drawable.icon, 
    "Crazy About Android...", System.currentTimeMillis()); 
    notif.setLatestEventInfo(context, from, message, contentIntent); 
    nm.notify(1, notif); 

你必須寫這對你從警報管理器調用活動。這會告訴你通知。

您還可以設置一個掛起的意圖,當用戶點擊通知時將會調用該意圖。

+0

可以在上午8點發出通知或只是打開應用程序嗎? – Zargle

+0

答覆已更新。請檢查 –

+0

那麼我需要把通知系統放在另一個班級嗎?或者它可以做PendingIntent pi = PendingInt.getService(context,0,new Intent(context,createNotification()),PendingIntent.FLAG_UPDATE_CURRENT);?而且我假設這些都在後臺運行,即使應用程序已關閉? – Zargle

0

事實上,你需要看看AlarmManager類,特別是其setRepeating()方法。它允許您設置觸發動作的時間間隔。希望這可以幫助。

+0

我一直在想弄清楚如何使用AlarmManager的警報和實際工作。我一直在Google上搜索幾個小時,但找不到一個實際工作的教程,這不僅僅是一個普通的鬧鐘,而是與通知一起工作。感謝您的幫助,我將研究setRepeating()方法,但您是否知道AlarmManager with Notifications的任何教程? – Zargle

+0

@SpencerPeriShulem,對不起,沒有閱讀過任何教程,但我知道這個話題在Pro Android系列書中有詳細描述,你應該考慮讓自己變成一個。 – Egor

+0

我會研究它,謝謝! – Zargle