gpt4 book ai didi

java - 如何在打盹模式下将应用列入白名单 Android 6.0

转载 作者:IT老高 更新时间:2023-10-28 20:35:57 36 4
gpt4 key购买 nike

此问题与将于本月底最终发布的 Android 6.0 Preview 3 有关。

我正在 Nexus 5“锤头”上的 Google 预览版 3 中测试 Android 6.0 中的一些内容。

新功能是“打盹模式”——类似于深度 sleep 模式,当网络被禁用且手机处于 sleep 状态时,只有 SMS、通话或高优先级 GCM 消息可以将其唤醒。但就像 WhatsApp - 在打瞌睡模式下,它会在 2 小时或更长时间后收到消息,这取决于计时器。但是有一个名为“白名单”的“未优化”应用列表,您可以在其中手动添加应用。

好的,我想找到一种方法以编程方式将我的应用程序添加到电池设置中设备中存在的“白名单应用程序列表”中,而无需用户交互。

尝试使用反射进入我发现:

在 android.os.IDeviceIdleController 中有一个方法:

public abstract void addPowerSaveWhitelistApp (String packageNameOfApp)

但这是一个接口(interface)……所以我们不能创建接口(interface)的实例。

目前还没有关于此接口(interface)或方法或任何继承树的文档。

也许你知道我应该在哪里寻找以编程方式添加我的应用程序的可能性?

还有一种方法

public abstract boolean isPowerSaveWhitelistApp (String packageName)

我认为应该可以以某种方式访问​​?!检查应用程序是否存在于白名单中,并可能在最后希望用户将其添加到白名单中。

所以我的问题是,你们有没有人尝试过做出更好的结果?因为我被困住了,我认为这是一个死胡同。

更多信息:https://newcircle.com/s/post/1739/2015/06/12/diving-into-android-m-doze

最佳答案

添加权限

<uses-permission 
android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>

请求将您的应用列入白名单

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Intent intent = new Intent();
String packageName = getPackageName();
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
if (!pm.isIgnoringBatteryOptimizations(packageName)) {
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
startActivity(intent);
}
}

关于java - 如何在打盹模式下将应用列入白名单 Android 6.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32627342/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com