0
我有两个报警1.步行提醒2.提示通知 用户可以取消,步行提醒。取消过程工作正常。检查报警管理器是否设置为假阳性
private void setWalkReminder(){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 18);
calendar.set(Calendar.MINUTE, 50);
calendar.set(Calendar.SECOND, 0);
Intent walkIntent = new Intent(this, AlarmReceiver.class);
Log.d(TAG, "Started WALK SET");
walkIntent.putExtra("alarmType", "walkReminder");
PendingIntent walkPendingIntent = PendingIntent.getBroadcast(this, WALK_REMINDER, walkIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager walkAlarmManager = (AlarmManager) this.getSystemService(ALARM_SERVICE);
walkAlarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 180000 /*AlarmManager.INTERVAL_DAY*/, walkPendingIntent);
workoutEditor = workoutPrefs.edit();
workoutEditor.putBoolean("walkReminderIsSet", true);
workoutEditor.commit();
}
private void cancelWalkReminder(){
Intent walkIntent = new Intent(this, AlarmReceiver.class);
PendingIntent walkPendingIntent = PendingIntent.getBroadcast(this, WALK_REMINDER, walkIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Log.d(TAG, "Walk Canceled");
AlarmManager walkAlarmManager = (AlarmManager) this.getSystemService(ALARM_SERVICE);
walkAlarmManager.cancel(walkPendingIntent);
}
我检查报警是否通过以下方法设置:
boolean walkAlarmDown = (PendingIntent.getBroadcast(this, WALK_REMINDER,
new Intent(this, AlarmReceiver.class), PendingIntent.FLAG_NO_CREATE) == null);
if (walkAlarmDown && workoutPrefs.getBoolean("walkReminderIsNeeded", true)){
Log.d(TAG, "WALK REMINDER SET");
setWalkReminder();
} else if (!walkAlarmDown && !workoutPrefs.getBoolean("walkReminderIsNeeded", true)){
Log.d(TAG, "WALK REMINDER CANCELED");
cancelWalkReminder();
} else {
if(!workoutPrefs.getBoolean("walkReminderIsNeeded", true) && walkAlarmDown){
Log.d(TAG, "Why is this false?");
} else if (!walkAlarmDown && workoutPrefs.getBoolean("walkReminderIsNeeded", true)){
Log.d(TAG, "proper functioning");
}
}
如果用户重新启用它被取消后,再提醒不会再次设置提醒。 Log.d输出是proper functioning
。这是因为walkAlarmDown仍然给出错误。我相信这是因为当警报被取消时,walkAlarmDown没有成为真实。如何确保walkAlarmDown应该在报警取消时变为真?
这是因为我的其他警报启用了吗?因此,只有一个警报被取消,另一个警报保持活动状态。它有不同的广播请求代码。所以我认为这不应该是一个问题。