Я работаю над приложением, которое использует будильник для периодических действий.Будильник устанавливается после завершения загрузки телефона.BroadcastReceiver
получение сигнала тревоги и запуск службы отключается, когда батарея разряжается, и включается, когда батарея снова в порядке:
@Override
public void onReceive(final Context context, final Intent intent) {
if (intent != null && intent.getAction() != null) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
// Set alarm
} else if (action.equals(Intent.ACTION_BATTERY_LOW)) {
setLocationAlarmReceiverEnabled(context, false);
} else if (action.equals(Intent.ACTION_BATTERY_OKAY)) {
setLocationAlarmReceiverEnabled(context, true);
}
}
}
private void setLocationAlarmReceiverEnabled(final Context context,
final boolean enabled) {
PackageManager packageManager = context.getPackageManager();
ComponentName locationAlarmReceiver = new ComponentName(context,
LocationAlarmReceiver.class);
packageManager.setComponentEnabledSetting(locationAlarmReceiver,
enabled ? PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
: PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
В практическом тесте я могу подтвердить, что BroadcastReceiver
«LocationAlarmReceiver» получаетотключается, когда уровень заряда батареи падает до 15%, а после того, как телефон был подключен к AC / USB, он снова включается, когда уровень заряда батареи повышается до 30%.
Но теперь у меня был следующий сценарий:
- Уровень заряда батареи снижается до 15%, «LocationAlarmReceiver» отключается
- Телефон в конечном итоге отключается из-за разряда батареи
- Телефон подключен к сети переменного тока / USB
- Телефон включен и загружается, продолжает заряжаться, уровень заряда батареи достигает 100%
- «LocationAlarmReceiver» по-прежнему отключен
Я могу только догадываться, что Intent.ACTION_BATTERY_OKAY
Намерение никогда не доставлялось.
Правильно ли это наблюдение?Как я могу убедиться, что «LocationAlarmReceiver» снова включается?