本文介绍了如何在Android中设置多个告警,上次告警覆盖了本例中的前置告警的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个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中设置多个告警,上次告警覆盖了本例中的前置告警的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-26 17:08