如何检查我的应用程序是否已针对Android进行了电池优化配置?

时间:2019-01-19 05:14:41

标签: android react-native

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

1 个答案:

答案 0 :(得分:3)

在本机android中,您可以使用PowerManager.isIgnoringBatteryOptimizations()布尔值来确定应用程序是否已经忽略优化,即该应用程序是否在白名单中。

 @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