当电池电量不足时启用/启用BroadcastReceiver
问题描述:
我正在使用闹钟来定期执行某些操作。闹铃在手机完成启动时设定。当电池电量下降当电池电量不足时启用/启用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”被再次启用?
答
如果您没有接到Intent.ACTION_BATTERY_OKAY
的电话,那么您应在接到ACTION_BOOT_COMPLETED
的电话时启用接收器,检查您的接收器是否被禁用,那么您应启用它。
我想过这么多谢谢确认,但我想这可能意味着'BroadcastReceiver'在电池电量(仍然)低时启用? –
然后你应该在启用接收器之前检查电池电量,如果电池电量高于15%,那么你可以启用它...... –
是的,这里是如何做到这一点的信息:[链接](http:// *问题:3661464/get-battery-level-before-broadcast-receiver-responds-for-intent-action-battery-ch) –