gpt4 book ai didi

android - 如何检测用户在电池优化中从 "Not optimized"列表中删除了我的应用程序?

转载 作者:行者123 更新时间:2023-12-03 23:56:24 25 4
gpt4 key购买 nike

我有一个需要忽略打盹模式的应用程序,它要求用户以通常的方式将其添加到未优化的应用程序列表中:

    Intent intent = new Intent();
String packageName = getPackageName();
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
startActivityForResult(intent, BATTERY_OPTIMIZATION_REQUEST);

onActivityResult()我检查他是否真的将其添加到“未优化”列表中。到目前为止一切顺利。我的应用程序启动它的服务,该服务获取并持有 WAKE_LOCK 并永久工作(是的,我知道这会耗尽电池,但我的用例需要它)。

我的问题是,稍后用户可能会决定从“未优化”列表中删除该应用程序。

我的问题:
  • 是否有我可以注册的广播以获得电池优化设置更改的通知?
  • 如果没有,是否有其他方法可以检测我的应用程序的电池优化设置已更改,而不是使用 isIgnoringBatteryOptimizations() 定期检查其状态?

  • 最初我认为在这种情况下应用程序将被停止(当权限被删除时),但事实并非如此。

    最佳答案

    有系统广播可以收听:android.os.action.POWER_SAVE_WHITELIST_CHANGED .可以找到 PowerManager.ACTION_POWER_SAVE_WHITELIST_CHANGED但这对 API 是隐藏的并且没有记录。

    请注意,电池优化白名单中的任何更改都会触发此操作,而不仅仅是您的应用程序。

    IntentFilter intentFilter = new IntentFilter("android.os.action.POWER_SAVE_WHITELIST_CHANGED");
    BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
    // the battery optimization whitelist changed
    // TODO: check if isIgnoringBatteryOptimizations()
    }
    };
    context.registerReceiver(broadcastReceiver, intentFilter);

    关于android - 如何检测用户在电池优化中从 "Not optimized"列表中删除了我的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45770063/

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