java - 如何设置多个AlarmManager的不同时间

标签 java android alarmmanager

大家好,我正在尝试设置多个 AlarmManager 不同的时间,并使用此代码

public void StartAppNotifications( String title ,int h ,int m ) {

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, h);
        calendar.set(Calendar.MINUTE, m);
        calendar.set(Calendar.SECOND, 0);


        if (!calendar.before(Calendar.getInstance())) {

            Intent intent = new Intent(getApplicationContext(), AlertReceiver.class);
            intent.putExtra("title", title);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

        }

    }

如果此方法被调用一次,它会起作用一次,但如果调用多次,它就不起作用 我想这样调用它

StartAppNotifications("alarm text" ,18 ,30);

最佳答案

来自doc关于 AlarmManager,当您设置使用相同待处理 Intent 的第二个警报时,它会替换原始警报

因此,您需要为每个重复闹钟使用不同的 PendingIntent,例如使用标志 PendingIntent.FLAG_ONE_SHOT 创建 PendingIntent

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_ONE_SHOT);

关于java - 如何设置多个AlarmManager的不同时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58537163/

相关文章:

java - 如何从 servlet 发送参数

java - 如何使用 Java NIO 套接字重新组装数据包

android - 以编程方式创建 TableLayout

android - iText 库 - 不显示西里尔文(俄语)符号

android - 用户从微调器中选择项目,csv 文件中的相应数字显示在 TextView 中

android - 我想在android中的不同日期(星期一,星期二等)的特定时间安排任务

java - 如何在给定字符串的特定位置插入十六进制字节

java - 如何使用 BC 将分离的 CAdES 签名转换为封装?

android - 当 App Force Stop 时,在带有 AlarmManager 的 App 中设置的警报被删除

android - 如何在 android 中每周安排闹钟?