每次充电器连接到设备并且应用程序关闭时,我都尝试运行一些代码。我发现的唯一的事情是安排一个只能在连接充电器时运行的作业,但问题是代码只会运行一次(除非我重新安排它)并且它只会在设置时运行次。我希望代码在每次连接充电器时立即运行,就像广播监听器一样,但在后台运行。
这可能吗?或者您还有其他建议吗?
提前致谢! :)
编辑:
如果您运行 API 级别 26+,您似乎无法再收听此类广播ref https://developer.android.com/guide/components/broadcast-exceptions.html
每当设备连接或断开电源时,BatteryManager 就会广播一个操作。即使您的应用程序未运行,接收这些事件也很重要 - 特别是因为这些事件会影响您启动应用程序以启动后台更新的频率 - 因此您应该在清单中注册一个 BroadcastReceiver 以通过以下方式侦听这两个事件在意图过滤器中定义 ACTION_POWER_CONNECTED 和 ACTION_POWER_DISCONNECTED。
<receiver android:name=".PowerConnectionReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>
</receiver>
在关联的 BroadcastReceiver 实现中,您可以提取当前的充电状态和方法,如上一步所述。
public class PowerConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
}
}
Ref: https://developer.android.com/training/monitoring-device-state/battery-monitoring https://developer.android.com/training/monitoring-device-state/battery-monitoring
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)