首先,我读了很多关于这个问题的答案,
我想设置5个警报但有不同的时间,问题是最后一个覆盖其他警报,所以我只看到最后一个,
我试图更改PendingIntent的请求代码以使其唯一,但问题仍然存在:
我真的多次重写代码,但结果相同,
我尝试为所有警报创建一个方法并更改请求代码但没有用,我也尝试使用唯一的请求代码为每个警报制作不同的方法,但最后一个警报仍覆盖其他警报,
这是我的两个方法的代码作为示例:
注意:
我有的变量
fajrMillis,dhuhrMillis:
是转换为日历以设置时间的毫秒数
fajrMessage,dhuhrMessage:要发送到接收器类的字符串消息到其中的通知
调用这两种方法:
.Cells

setFajrAlarm(fajrMillis, 1, fajrMessage);
setDhuhrAlarm(dhuhrMillis, 2, dhuhrMessage);

接收机班级
public void setFajrAlarm(long millis, int id, String message) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(millis);
PrayersReceiver.notificationId = id;// 1
PrayersReceiver.notificationMessage = message;// "حان الآن موعد صلاة الفجر"
Intent intent = new Intent(getBaseContext(), PrayersReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT | Intent.FILL_IN_DATA);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
c.getTimeInMillis(),30000, pendingIntent);
}
public void setDhuhrAlarm(long millis, int id, String message) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(millis);
PrayersReceiver.notificationId = id;// 1
PrayersReceiver.notificationMessage = message;// "حان الآن موعد صلاة الظهر
Intent intent = new Intent(getBaseContext(), PrayersReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 2, intent, PendingIntent.FLAG_UPDATE_CURRENT | Intent.FILL_IN_DATA);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
c.getTimeInMillis(), 5000, pendingIntent);
}
//---------------------------------------------------------------------------------

在此先感谢,希望尽快得到答案
答案 0 :(得分:0)
我知道答案,所以如果有人面临这个问题来获得解决方案: 我在接收器类中设置变量值,因此最后一个方法调用会覆盖先前的调用:
PrayersReceiver.notificationId = id;
PrayersReceiver.notificationMessage = message;
问题在于方法体中的这两行: 所以它得到了解决:
Intent intent = new Intent(getBaseContext(), PrayersReceiver.class);
intent.putExtra("notificationId", id);
intent.putExtra("notificationMessage", message);
并在接收器类中获取两个值:
Bundle bundle = intent.getExtras();
if (bundle == null) {
Log.i("PrayersReceiver", "bundle is null");
return;
}
notificationId = bundle.getInt("notificationId");
notificationMessage = bundle.getString("notificationMessage");