如何使我的应用程序在android 8+使用根命令后获得限制广播
每当用户将设备连接到充电器或断开设备时,我都想要吐司。我试过JobScheduler,但它似乎不能正常工作。
监控充电状态变化
充电状态很容易改变(插入/取出充电器),所以监控充电状态和改变刷新率是很重要的。
当充电状态发生变化时,BatteryManager发送广播。接收这些事件很重要,即使应用程序没有运行,因为你可能需要在后台启用更新服务。因此,您需要在Androidmanifest.xml文件中注册广播接收器,并添加两个动作: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>
在相关的广播接收器实现中,可以读出当前的充电状态。
示例代码:
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;
}
}