Ho creato un'app che funzionava sempre fino ad Android 6.0. Penso che sia la funzione Doze che non permette al mio allarme di sparare.Problema di Alarm Manager in Android 6.0 Modalità Doze
Io uso sharedpreferences di gestire le opzioni:
//ENABLE NIGHT MODE TIMER
int sHour = blockerTimerPreferences.getInt("sHour", 00);
int sMinute = blockerTimerPreferences.getInt("sMinute", 00);
Calendar sTime = Calendar.getInstance();
sTime.set(Calendar.HOUR_OF_DAY, sHour);
sTime.set(Calendar.MINUTE, sMinute);
Intent enableTimer = new Intent(context, CallReceiver.class);
enableTimer.putExtra("activate", true);
PendingIntent startingTimer = PendingIntent.getBroadcast(context, 11002233, enableTimer, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager sAlarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
sAlarm.setRepeating(AlarmManager.RTC_WAKEUP,
sTime.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, startingTimer);
Qualsiasi indizio di che cosa è male qui?
Questa è un'applicazione per bloccare le chiamate. Grazie!
EDIT: Ho 3 file (di più, ma ...), come:
MainActivity (All code)
CallReceiver (Broadcast that triggers the alarm again (reboot etc))
CallReceiverService (Handles the call/phone state)
Usa 'dumpsys adb shell alarm' per confermare che la sveglia è in programma. Si noti che 'setRepeating()' è inesatto su Android 4.4+. "Questo sta causando anche il consumo della batteria" - sembra improbabile. Il codice che non funziona non dovrebbe consumare batteria. – CommonsWare
Ciao @CommonsWare, 52 riattivi e 52 allarmi ... Fa sempre scattare gli allarmi. 'setRepeating()' sparerà in quel minuto, nessun problema penso. – FilipeOS
@FilipeOS Hai fatto funzionare? Possiamo implementare alarmManager.setRepeating() nella modalità doze? – devgeek