如何访问Android M中的IDeviceIdleController实例



我正在探索安卓m预览版1中的更改。具体来说,我想知道我是否可以通过编程检查我的应用程序是否在Doze和应用程序待机模式下被列入白名单。我基本上想要"adb shell dumpsys deviceidle"的结果。我试图通过getSystemServices获取android.os.IDeviceIdleController的实例,但它返回null。当我做"adb shell服务列表"时,我得到"56设备空闲:[android.os.IDeviceIdleController]"。如果我可以访问该实例,那么我可以使用java反射来访问公共方法是PowerSaveWhitelistApp(字符串名称)。

您需要有android.permission.DEVICE_POWER(签名保护)才能调用该方法。参见源代码:

  • https://android.googlesource.com/platform/frameworks/base/+/af8ff4f/services/core/java.com/android/server/DeviceIdleController.java#1160
  • https://android.googlesource.com/platform/packages/apps/Settings/+/be59441/src/com/android/settings/fuelgauge/RequestIgnoreBatteryOptimizations.java#106

相关内容

  • 没有找到相关文章