首页 > 解决方案 > 如何检查我的应用是否已在 Android 上配置电池优化?

问题描述

我想知道 React Native 中是否有任何方法可以让我们知道用户是否为我们的应用程序选择了“电池优化”?

标签: androidreact-native

解决方案


在原生 android 中,您可以使用PowerManager.isIgnoringBatteryOptimizations()boolean 来确定应用程序是否已经忽略优化,即应用程序是否在白名单上。

 @ReactMethod public void isAppIgnoringBatteryOptimization(Callback callback){
    String packageName = getReactApplicationContext().getPackageName();
    PowerManager pm = (PowerManager) getReactApplicationContext().getSystemService(Context.POWER_SERVICE);
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
      callback.invoke(pm.isIgnoringBatteryOptimizations(packageName));
    }else{
      callback.invoke(true);
    }

然后在js中

 isAppIgnoringBatteryOptimization: function(callback) {
    jobModule.isAppIgnoringBatteryOptimization(ignoringOptimization => {
      if (ignoringOptimization != null) {
        callback("", ignoringOptimization);
      } else {
        callback("error", null);
      }
    });
  }

https://github.com/vikeri/react-native-background-job/是一个很好的库,可以看到后台执行的所有边缘情况

如果您想要求用户将其关闭 - 要求

Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS允许

https://developer.android.com/reference/android/provider/Settings#ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS


推荐阅读