2011-08-25 44 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); 
相关问题