我不是说什么也没发生。对话框弹出:
“让应用始终在后台运行吗? 允许/拒绝
但是,如果我进入“应用程序”,“电池优化”设置,我的应用程序仍设置为“优化电池使用”。然后,我可以手动将其切换为“不优化”,但是根据文档和此处的所有其他问题,请使用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);
}
}
我正在使用上面的代码。它会触发,并弹出一个对话框,提示“让应用始终在后台运行吗?”我按允许。
我的问题是按“允许”实际上是做什么的,因为如果您随后进入“应用程序”设置,然后查看“电池优化”,则设置表明该应用程序仍在“优化电池使用率”。
因此会出现以上意图,然后按“允许”实际上并不会做任何事情。
答案 0 :(得分:1)
我将您的代码放入了一个剪贴项目,在清单中添加了android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
权限,并在Google Pixel(Android 9.0)上运行,一切正常。无需重启。
那么,要么:
您的问题仅在Android 8.1或更旧的设备上出现,并反映了它们在9.0中修复的平台错误,或者
您的问题与某些制造商的某些设备有关
我的猜测是后者,但是您需要进行更广泛的测试才能确定这一点。