代码之家  ›  专栏  ›  技术社区  ›  Isaac

如何检查我的应用程序是否已在Android上配置电池优化?

  •  3
  • Isaac  · 技术社区  · 6 年前

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

    1 回复  |  直到 6 年前
        1
  •  3
  •   kkarakk    6 年前

    在本机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