android中取消多个报警时的id冲突
我的应用程序允许用户设置在特定时间服药的提醒。 设置这些警报没有问题。我在另一个活动的晚些时候取消这些警报时遇到困难 这是我设置警报的代码:android中取消多个报警时的id冲突,android,android-intent,android-pendingintent,android-alarms,repeatingalarm,Android,Android Intent,Android Pendingintent,Android Alarms,Repeatingalarm,我的应用程序允许用户设置在特定时间服药的提醒。 设置这些警报没有问题。我在另一个活动的晚些时候取消这些警报时遇到困难 这是我设置警报的代码: private void setAlarms() { Intent myIntent=new Intent(getApplicationContext(), AlarmReceiver.class); myIntent.putExtra("MedName",medication_name); myIntent.setAction("
private void setAlarms() {
Intent myIntent=new Intent(getApplicationContext(), AlarmReceiver.class);
myIntent.putExtra("MedName",medication_name);
myIntent.setAction("b5.project.medibro.receivers.AlarmReceiver");
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
int counter=0;
for(String timer: timers){
//timer is a string of the form "hh:mm"
try {
String[] comps=timer.split(":");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, Integer.valueOf(comps[0]));
cal.set(Calendar.MINUTE, Integer.valueOf(comps[1]));
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
//Date date= dateFormat.parse(startDate + " " + timer);
Log.d(TAG,comps[0]+" "+comps[1]+ "Alarm Time: " + cal.getTime().toString());
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), counter, myIntent,PendingIntent.FLAG_UPDATE_CURRENT);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis(),
AlarmManager.INTERVAL_DAY,
pendingIntent);
Log.d(TAG,"Counter: "+counter);
counter++;
} catch (ParseException e) {
e.printStackTrace();
Log.d(TAG,"Time Parsing error: "+e.getMessage());
}
}
正如你所看到的,柜台是一种药品的悬挂物的id。
但是,当有多种药物时,待决意向将具有相同的ID。(计数器值)
有人能建议一种替代/有效的方法来解决此冲突吗?循环结束时,必须将计数器值保存在某个位置。并在循环开始时获取它。 将它们另存为逗号分隔的整数字符串,其中包含 与特定药物相关的所有意图。 例如:
String a = "0,1,2,3,4";
putString("MEDICINE_1",a);
然后
但是“MEDICINE_2”呢?即使它具有相同的计数器值(0,1,2,3,4),我也无法获取正确的挂起意图,因为计数器值相互覆盖。请将计数器的初始化移出方法。这样,添加新药时计数器值不会从0开始。
getString("MEDICINE_1").split(',')