【发布时间】:2019-03-08 03:18:57
【问题描述】:
我不是说什么都没发生。弹出对话框:
“让应用程序始终在后台运行? 允许/拒绝
但是,如果我进入设置、应用、电池优化,我的应用仍然设置为“优化电池使用”。然后我可以手动将其切换为“不优化”,但根据此处的文档和所有其他问题,使用 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 意图并单击允许,应该会更改此设置。
我正在使用:
另外,这个应用程序是用于研究的,不会上架,所以我不担心 Play 商店的政策。
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);
}
}
我正在使用上面的代码。它触发,弹出一个对话框“让应用程序始终在后台运行?”我按允许。
我的问题是按下“允许”实际上是做什么的,因为如果您随后进入应用设置并查看电池优化,设置会显示应用仍在“优化电池使用”。
所以看起来上面的意图,然后按允许,实际上并没有做任何事情。
【问题讨论】:
-
不清楚您的问题是什么。您可能还想发布minimal reproducible example,以便我们可以看到您如何设置
Intent(尤其是Uri,此特定Intent操作需要包含在其中)。 -
经过进一步检查,重启手机后似乎变为“未优化”。我尝试了强制关闭设置,但这并没有改变任何东西,它似乎只有在关闭并再次打开手机后才会改变。
-
我在另一个 question 上发布了一个解决方法
标签: android android-doze