android设置多个警报

时间:2015-06-01 15:53:55

标签: android broadcastreceiver android-notifications android-pendingintent android-alarms

首先,我读了很多关于这个问题的答案, 我想设置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);
 
	}

//---------------------------------------------------------------------------------





在此先感谢,希望尽快得到答案

1 个答案:

答案 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");