Android 如何使用相同的时间和日期触发警报
我有一个目标设定应用程序,其中在应用程序中设定的目标的每个活动中都设置了报警时间和日期 例如: 目标1:AAndroid 如何使用相同的时间和日期触发警报,android,alarmmanager,Android,Alarmmanager,我有一个目标设定应用程序,其中在应用程序中设定的目标的每个活动中都设置了报警时间和日期 例如: 目标1:A Activity a1: nana Deadline: 11/5/2015 Alarm Time: 9:00 am 目标2:B Activity b1: hehe Deadline: 11/5/2015 Alarm Time: 9:00 am 他们中只有一人被解雇了。我试着在每个活动警报时间上设置不同的毫秒。但还是一样。我希望他们同时被解雇。我尝试了其他来源,他们建议使用set
Activity a1: nana
Deadline: 11/5/2015
Alarm Time: 9:00 am
目标2:B
Activity b1: hehe
Deadline: 11/5/2015
Alarm Time: 9:00 am
他们中只有一人被解雇了。我试着在每个活动警报时间上设置不同的毫秒。但还是一样。我希望他们同时被解雇。我尝试了其他来源,他们建议使用setExact(),但我不能使用该函数,因为它只适用于API 19及以上版本。我的API是17。当我设置不同时间但相同日期的警报时,没有问题
这是我的代码:
首先,我将活动的报警时间设置放在表\u ACTIVITIES中
public void setAlarm(){
Activities act = dbhandler.getActivity(actid);
// give them random millisecond
int min = 1;
int max = 1000;
Random r = new Random();
m = r.nextInt(max - min + 1) + min;
MessageTo.message(SetNotifyActivity.this,Integer.toString(m));
//the second is 0
dbhandler.updateActivityAlarm(hour,minute,0,m,goal_id,actid);
}
然后设置用户在每个目标中进行的所有活动中的所有警报
public void setAlarms(){
List<Activities> allActs = dbhandler.getAllActivitiesByGoal(goal_id);
for (final Activities act : allActs) {
//for alarm
//Create an offset from the current time in which the alarm will go off.
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
cal.set(Calendar.DATE, Integer.parseInt(act.getEDay())); //1-31
cal.set(Calendar.MONTH, Integer.parseInt(act.getEMonth()) - 1); //first month is 0!!! January is zero!!!
cal.set(Calendar.YEAR, Integer.parseInt(act.getEYear()));//year...
cal.set(Calendar.HOUR_OF_DAY, act.getHour());
cal.set(Calendar.MINUTE, act.getMinute());
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, act.getMillisecond());
//MessageTo.message(SetNotifyActivity.this, hour+":"+minute+" "+format);
//assigned a unique id to notifications
//Create a new PendingIntent and add it to the AlarmManager
Intent intent3 = new Intent(this, ViewTasksActivity.class);
intent3.putExtra("goalid", Integer.toString(goal_id));
intent3.putExtra("activityId", Integer.toString(act.getActId()));
intent3.putExtra("activityName", act.getActivityName());
intent3.putExtra("show", "true");
PendingIntent pendingIntent = PendingIntent.getActivity(this,
act.getActId(), intent3, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am =
(AlarmManager) getSystemService(Activity.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
pendingIntent);
}
}
public void setAlarms(){
列出allActs=dbhandler.getAllActivitiesByGoal(目标id);
(最终活动法:allActs){
//报警
//创建一个与报警将关闭的当前时间的偏移量。
Calendar cal=Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
cal.set(Calendar.DATE,Integer.parseInt(act.getEDay());//1-31
cal.set(Calendar.MONTH,Integer.parseInt(act.getEMonth())-1);//第一个月是0!!!一月是零!!!
cal.set(Calendar.YEAR,Integer.parseInt(act.getEYear());//年。。。
cal.set(Calendar.HOUR,OF_DAY,act.getHour());
cal.set(Calendar.MINUTE,act.getMinute());
校准设置(日历秒,0);
cal.set(Calendar.millis秒,act.getmillis秒());
//MessageTo.message(SetNotifyActivity.this,小时+“:“+分钟+”+格式);
//为通知分配了唯一的id
//创建新的PendingEvent并将其添加到AlarmManager
Intent intent3=新的Intent(这是ViewTasksActivity.class);
intent3.putExtra(“goalid”,Integer.toString(goal_id));
intent3.putExtra(“activityId”,Integer.toString(act.getActId());
intent3.putExtra(“activityName”,act.getActivityName());
意图3.额外(“显示”、“真实”);
PendingEvent PendingEvent=PendingEvent.getActivity(此,
act.getActId(),intent3,PendingEvent.FLAG_CANCEL_CURRENT);
报警管理器am=
(AlarmManager)getSystemService(Activity.ALARM_服务);
am.set(AlarmManager.RTC_唤醒,cal.getTimeInMillis(),
悬挂式);
}
}