0
我正在使用鬧鐘來定期執行某些操作。鬧鈴在手機完成啓動時設定。當電池電量下降當電池電量不足時啓用/啓用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」被禁用:當電池變低時,BroadcastReceiver
接到報警,並啓動服務被禁用和啓用時電池又是好的到15%,手機連接到AC/USB後,當電池電量上升到30%時,它再次啓用。
但現在我有以下情形:
- 電池電量下降到15%,「LocationAlarmReceiver」被禁用
- ,因爲電池電量耗盡手機最終會自行關閉
- 電話連接到AC/USB
- 電話開機並開機,繼續充電,電池電量達到100%
- 「LocationAlarmReceiver」仍然被禁用
我只能猜測Intent.ACTION_BATTERY_OKAY
意圖從未交付。
這個觀察是否正確?我怎樣才能確保「LocationAlarmReceiver」被再次啓用?
我想過這麼多謝謝確認,但我想這可能意味着'BroadcastReceiver'在電池電量(仍然)低時啓用? –
然後你應該在啓用接收器之前檢查電池電量,如果電池電量高於15%,那麼你可以啓用它...... –
是的,這裏是如何做到這一點的信息:[鏈接](http:// stackoverflow問題:3661464/get-battery-level-before-broadcast-receiver-responds-for-intent-action-battery-ch) –