Android 操作\u请求\u忽略\u电池\u优化不起任何作用

Android 操作\u请求\u忽略\u电池\u优化不起任何作用,android,android-doze,Android,Android Doze,我不是说什么都没发生。弹出对话框: “让应用程序始终在后台运行? 允许/拒绝 但是,如果我进入设置、应用程序、电池优化,我的应用程序仍然设置为“优化电池使用”。然后我可以手动将其切换为“不优化”,但根据文档和此处的所有其他问题,使用操作\u请求\u忽略\u电池优化意图,并单击“允许”,应该会更改此设置 我使用的是: 另外,这个应用程序是用于研究的,不会在商店中使用,所以我不担心游戏商店的政策 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.

我不是说什么都没发生。弹出对话框:

“让应用程序始终在后台运行? 允许/拒绝

但是,如果我进入设置、应用程序、电池优化,我的应用程序仍然设置为“优化电池使用”。然后我可以手动将其切换为“不优化”,但根据文档和此处的所有其他问题,使用操作\u请求\u忽略\u电池优化意图,并单击“允许”,应该会更改此设置

我使用的是:

另外,这个应用程序是用于研究的,不会在商店中使用,所以我不担心游戏商店的政策

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);
        }
    }
我正在使用上面的代码。它会启动,弹出一个对话框“让应用程序始终在后台运行?”我按下“允许”

我的问题是,按“允许”实际上是做什么的,因为如果你进入应用程序设置,查看电池优化,设置会说应用程序仍然在“优化电池使用”


因此,似乎上面的意图,按“允许”,实际上并没有做任何事情。

我把你的代码放在一个废弃的项目中,添加了
android.permission.REQUEST\u IGNORE\u BATTERY\u OPTIMIZATIONS
权限到清单中,在谷歌像素(android 9.0)上运行它,一切正常。无需重新启动

因此,要么:

  • 您的问题只出现在Android 8.1或更早版本的设备上,反映了他们在9.0或更高版本中修复的平台错误

  • 您的问题与某些制造商的某些设备有关


我的猜测是后者,但您需要进行更广泛的测试来尝试确定这一点。

您的问题不清楚。您可能还想发布一篇文章,以便我们了解您是如何设置
意图的。
(值得注意的是,
Uri
需要在其中才能使此特定的
Intent
操作生效)。进一步检查后,它似乎变为“未优化”",重新启动手机后。我尝试强制关闭设置,但这并没有改变任何东西,似乎只有在关闭手机并再次打开后才会改变。我在另一个帖子中做了一个变通,我在android 9上使用了Pixel XL。当你说一切都按预期工作时,这是否意味着在运行项目后,如果你转到设置->应用->项目->高级->电池,上面写着“未优化”?@Georgiewicks:正确。好的,谢谢,我猜这只是Android中的一个奇怪的东西。我的感觉是它一定在工作,设置应用程序只是没有动态更新。@Georgiewicks我在Pixel 2 api级别28上试过,我看到了与你看到的相同的行为。设置页面中的权限在我重新启动之前不会更改。但是,我只是尝试使用了点击接受按钮前后的“adb shell dumpsys deviceidle”。点击接受按钮后,我的应用程序包立即列在“白名单用户应用程序:”部分,应用程序id列在“白名单(空闲除外)所有应用程序id:”、“白名单用户应用程序id”和“白名单所有应用程序id”部分。