- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
此问题与将于本月底最终发布的 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/
有谁知道在设备处于打盹或应用处于待机状态时,持有部分唤醒锁定的列入白名单的应用是否可以接收位置更新? Android 文档 (http://developer.android.com/training
我是一名优秀的程序员,十分优秀!