怎么在Android中设置多个告警,上次告警覆盖了本例中的前置告警

本教程将介绍如何在Android中设置多个告警,上次告警覆盖了本例中的前置告警的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

怎么在Android中设置多个告警,上次告警覆盖了本例中的前置告警 教程 第1张

问题描述

我正在开发一个Android应用程序,用户可以在其中设置提醒时间,但我在遵循代码时遇到了一个问题,即最后一个警报覆盖所有之前的警报。

MainActivity.Java

public void setreminders()
{
 DatabaseHandler db=new DatabaseHandler(this);
 ArrayList<Tablet> tt=db.getAllContacts();
 int ijk=tt.size();
 Calendar[] arr=new Calendar[ijk];
 int i=0;
 //AlarmManager[] alarmManagers=new AlarmManager[ijk];
 //ArrayList pintt=new ArrayList<PendingIntent>();
 Intent alarmintent=new Intent(this,AlarmReceiver.class);
 pint=PendingIntent.getBroadcast(this,0,alarmintent,0);
 alarmManager=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
 for(Tablet val:tt)
 {
  Log.w("timings",val.getTime());
  String pps=val.getTime();
  int h=Integer.parseInt(pps.substring(0,2));
  int m=Integer.parseInt(pps.substring(3,5));
  Log.w("hour",String.valueOf(h));
  Log.w("minute",String.valueOf(m));
  arr[i]=Calendar.getInstance();
  arr[i].set(Calendar.HOUR_OF_DAY,h);
  arr[i].set(Calendar.MINUTE,m);
  long intend=arr[i].getTimeInMillis();
  alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,intend,AlarmManager.INTERVAL_DAY,pint);
  i=i+1;
 }

推荐答案

您的PendingIntent需要使用唯一的ID:

pint=PendingIntent.getBroadcast(this,id,alarmintent,0);

因此,请确保PendingIntent的第二个参数requestCode仅使用一次。此外,您还应该实现一种逻辑,即每次都可以取消警报。若要取消,您必须使用相同的ID。

好了关于怎么在Android中设置多个告警,上次告警覆盖了本例中的前置告警的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。