android - 我希望使用我在 Android 中通过数组传递的警报管理器来通知不同时间
问题描述
到目前为止我试过这个,但我的通知只在数组列表中最后一次有效。而我需要在数组中的所有时间通知。
int[]hour={5,11,18,18,19};
int[]min={15,0,50,52,05};
for(int i=0;i<5;i++){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour[i]);
calendar.set(Calendar.MINUTE, min[i]);
calendar.set(Calendar.SECOND, 00);
Date date =calendar.getTime();
Notification2(date);
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private void Notification2(Date b) {
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlertReceiver2.class);
Random random = new Random();
int j = random.nextInt(9999 - 1000) + 1000;
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, j, intent, 0);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, b.getTime(), pendingIntent);
}
MY Alertreciever 类
public class AlertReceiver2 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Random random = new Random();
int m = random.nextInt(9999 - 1000) + 1000;
NotificationHelper2 notificationHelper2 = new NotificationHelper2(context);
NotificationCompat.Builder nb = notificationHelper2.getChannelNotification();
notificationHelper2.getManager().notify(m, nb.build());
}
解决方案
尝试为您的最后一个参数添加一些标志PendingIntent
,例如PendingIntent.FLAG_ONE_SHOT
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, j,
intent, PendingIntent.FLAG_ONE_SHOT);
推荐阅读
- javascript - 如何确定是否已声明 Javascript 类?
- maven - Maven:如何在分叉的 JVM 中执行依赖项?
- angular - 从 HTTP 检索的建模数据以生成动态 Material 2 表
- javascript - 使用 Control.Draw 工具在被拖动后检测标记的原始位置和修改位置
- c - 为什么 free() 放置随机数据块而不是删除节点?
- mysql - 如何在 MySQL 中正确使用 INNER JOIN
- c - 最常见的 K 长度序列
- build - 为什么用cmake构建包含gtest的项目时找不到main?
- python - 如何链接保存在 Django 中不同位置的两个对象
- android - onDataChange 意外行为