2011-08-25 46 views
1

我從HTML中檢索日期列表。如何解析日期列表並將其設置爲AlarmManager?

當列表被檢索時,該列表被設置爲列表。

我想使用SimpleDate解析器(我知道該怎麼做)來解析和設置AlarmManager的日期。

由於它是多個日期。我怎麼能爲此創建一個方法?爲每個日期創建一個鬧鐘。

首次加載日期列表時,我希望它解析日期併爲每個日期設置一個警報。

如果一天有多個報警,我怎麼能把它們合併爲一個呢?

回答

1

當您包含包含日期的List對象的大小時,可以設置鬧鐘。

現在解析它並設置在任何循環中的待處理對象的報警中,如for循環。

只是使用的意圖同一個對象,的PendingIntent AlarmManager

在for循環不喜歡這種方式

Calendar setAlarm=Calendar.getInstance(); 
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); 

for(int i=0;i<listDate.size();i++){ 
    Intent intent=new Intent(getApplicationContext(),"YOUR BROADCAST CLASS"); 
    PendingIntent sender = PendingIntent.getBroadcast(this,i, intent, PendingIntent.FLAG_ONE_SHOT); 

    /// if you parse date direct then here pass 
    setAlarm.setTime(sdf.parse(listDate.get(0)); 
    am.set(AlarmManager.RTC_WAKEUP, setAlarm.getTimeInMillis(), sender); 
} 
+0

這是否會覆蓋報警?我正在使用ArrayList btw。如果他們能讓你更好地瞭解我在做什麼。 – yoshi24

+0

沒有,因爲在getBroadcast中,第二個參數是請求代碼,所以如果您將不同的請求代碼傳遞給同一個intent,那麼您可以設置不同的鬧鐘,同一個時間 – Pratik

+0

那麼我將如何每次更改請求代碼? – yoshi24

1

設置每個報警,有可能和支持。 但是,請注意,您必須以這種方式區分鬧鐘,以便Android不會「覆蓋」舊鬧鐘。 事情是,如果2個報警使用相同的意圖參數和額外的新的將覆蓋舊的。

例如,你應該改變的RequestID PARAM這樣的:

 Intent intent = new Intent(context, Alarm.class); 
     intent.putExtra("id", String.valueOf(**uniqueRequestId**)); 
     sender = PendingIntent.getBroadcast(context, **uniqueRequestId**, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
     alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, time, sender); 
相關問題