你可以嘗試這樣的:
ArrayList<Calendar> alarmTimes = getAlarmTimes(); //Make your own function which returns alarm times as an array of Calendar type
for(int i=0; i<alarmTimes.size(); i++)
{
Intent intent = new Intent(this, YourClass.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT | Intent.FILL_IN_DATA);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmTimes[i].getTimeInMillis(), pendingIntent);
}
如果你想獨立處理每個報警,然後使用不同的requestCode每個報警。 另外,您可能想看看alarmManager.set()函數中使用的不同標誌。根據您的應用需求修改它們。
http://developer.android.com/reference/android/app/PendingIntent.html
你將不得不作出一個AlarmReceiver類,將處理任何你想做的事情時,報警熄滅(請務必在AndroidManifest添加這個類作爲接收機)。如果你想與報警一起發送額外的信息,那麼你用意圖額外這樣的:
intent.putExtra("info1", value1);
intent.putExtra("info2", value2);
其中INFO1是額外數據的名稱,數值1,您發送的值。
希望這會有所幫助!
編輯:
ArrayList<Calendar> alarmTimes = new ArrayList<Calendar>();
Calendar calendar = Calendar.getInstance();
calendar.set(CALENDAR.MONTH, 7);
calendar.set(CALENDAR.DAY_OF_MONTH, 17);
calendar.set(CALENDAR.HOUR_OF_DAY, 13);
calendar.set(CALENDAR.MINUTE, 0);
alarmTimes.add(calendar);
//Repeat the above code for all alarm times and then return array object
return alarmTimes;
好吧,我跟着第一個教程,但我發現其中「CTX」不能被解析爲一個變量,getBroadcast不適用於參數的錯誤 – ScorpioBlue 2012-08-10 17:06:29
CTX在該示例引用了應用程序上下文。所以改爲「this」或「YourActivityName.this」 – Nate 2012-08-10 17:12:31
非常感謝你的男人!你知道我怎麼能把它變成通知嗎? – ScorpioBlue 2012-08-10 18:03:48