首页 > 解决方案 > 如何为我的根应用程序获得限制广播等特权?

问题描述

如何在 android 8+ 之后使用 root 命令使我的应用程序获得受限广播。

每次用户将设备连接到充电器或断开设备连接时,我都想敬酒。我已经尝试过 JobScheduler,但它似乎无法正常工作。

标签: androidroot

解决方案


监控充电状态变化。

充电状态可以轻松更改(插入/移除充电器),因此监控充电状态和更改刷新率非常重要。

当充电状态发生变化时,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;

    }

}

推荐阅读