Я бегу этот код, чтобы установить диспетчер тревоги в моем MainActivity на создание методаAlarmManager поднятием каждый раз я открываю приложение
public void notificationCheck() {
calendar.set(Calendar.HOUR_OF_DAY, Preferences.getMorningHour(getApplicationContext()));
calendar.set(Calendar.MINUTE, Preferences.getMorningMinute(getApplicationContext()));
calendar.set(Calendar.SECOND, 0);
final PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(this, AlarmReceiver.class), 0);
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
// Sets an alarm - note this alarm will be lost if the phone is turned off and on again
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
am.setAndAllowWhileIdle(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
} else {
am.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
}
Так это должно установить сигнализацию ежедневно в 10:00, Аварийный сигнал работая нормально, пока он не выстрелил один раз. Как только будильник будет выполнен в 10:00, он будет продолжать каждый раз, когда я открою приложение.
Может кто-нибудь объяснить, если мне нужно внести какие-либо изменения в код?
EDIT:
Я использую sharedPreferences установить время Календаря Instance
Предпочтение:
public static int getMorningHour(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context).getInt(MORNING_HOUR, 9);
}
public static void setMorningHour(Context context, Integer morningHour) {
PreferenceManager.getDefaultSharedPreferences(context).edit().putInt(MORNING_HOUR, morningHour).apply();
}
public static int getMorningMinute(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context).getInt(MORNING_MINUTE, 0);
}
public static void setMorningMinute(Context context, Integer morningMinute) {
PreferenceManager.getDefaultSharedPreferences(context).edit().putInt(MORNING_MINUTE, morningMinute).apply();
}
... и я установить предпочтение в моем приложении настройке с помощью TimePicker Dialog
@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) {
Preferences.setMorningHour(getApplicationContext(), hourOfDay);
Preferences.setMorningMinute(getApplicationContext(), minute);
}
См. Ниже ссылки. его работа для меня. [Repeat Alarm] (http://stackoverflow.com/a/40311030/3782085) –
Код тот же, я повторяю будильник ежедневно. Я прошу исправить ошибку для AlarmManager в начале действия –
, вы пытаетесь использовать широковещательный приемник с этим? – Radhey