如何获得特权,如限制广播为我的根应用程序?



如何使我的应用程序在android 8+使用根命令后获得限制广播

每当用户将设备连接到充电器或断开设备时,我都想要吐司。我试过JobScheduler,但它似乎不能正常工作。

监控充电状态变化

充电状态很容易改变(插入/取出充电器),所以监控充电状态和改变刷新率是很重要的。

当充电状态发生变化时,BatteryManager发送广播。接收这些事件很重要,即使应用程序没有运行,因为你可能需要在后台启用更新服务。因此,您需要在Androidmanifest.xml文件中注册广播接收器,并添加两个动作:ACTION_POWER_CONNECTEDACTION_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;
    }
}

相关内容

最新更新