L o a d i n g . . .
主打一个C++
文章详情

FLutter调用android原生api打开手机电池优化【进阶】

Posted on 2025-04-30 13:43:53 by 主打一个C++

//包含查询是否开启了电池优化,打开优化界面,尝试禁用(部分机型无效)

//java

//是否开启了电池优化
private boolean isBatteryOptimizationEnabled() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
            if (powerManager != null) {
                // 返回 true 表示当前处于“被电池优化”状态
                return !powerManager.isIgnoringBatteryOptimizations(getPackageName());
            }
            return true; // PowerManager 为空时默认认为是启用优化
        }
        return false; // 低于 M 版本不支持此功能,默认不启用
    }

    private boolean requestDisableBatteryOptimization() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            try {
                Intent intent = new Intent();
                intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
                intent.setData(Uri.parse("package:" + getPackageName()));
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                return true;
            } catch (Exception e) {
                Toast.makeText(this, "This operation is not supported on this device.", Toast.LENGTH_SHORT).show();
            }
        } else {
            Toast.makeText(this, "Battery optimization not supported on this Android version.", Toast.LENGTH_SHORT).show();
        }
        return false;
    }

//打开电池优化设置界面
    private void openBatteryOptimizationSettings() {
        Intent intent = new Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }

//请求关闭该App的电池优化(需要用户授权)
    private void setupBatteryOptimizationChannel(@NonNull FlutterEngine flutterEngine) {
        new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL_BATTERY_OPTIMIZATION)
                .setMethodCallHandler(
                        (call, result) -> {
                            switch (call.method) {
                                case "openBatteryOptimizationSettings":
                                    openBatteryOptimizationSettings();
                                    result.success(null);
                                    break;
                                case "isBatteryOptimizationEnabled":
                                    result.success(isBatteryOptimizationEnabled());
                                    break;
                                case "requestDisableBatteryOptimization":
                                    result.success(requestDisableBatteryOptimization());
                                    break;
                                default:
                                    result.notImplemented();
                                    break;
                            }
                        }
                );
    }

//flutter声明块,可直接调用

import 'package:flutter/services.dart';
final platform = MethodChannel('com.myapp.app/battery_optimization');

Future<void> openBatteryOptimizationSettings() async {
  try {
    await platform.invokeMethod('openBatteryOptimizationSettings');
  } on PlatformException catch (e) {
    print("Failed to open battery optimization settings: ${e.message}");
  }
}

Future<bool?> isBatteryOptimizationEnabled() async {
  return await platform.invokeMethod<bool>('isBatteryOptimizationEnabled');
}

Future<void> requestDisableBatteryOptimization() async {
  return await platform.invokeMethod('requestDisableBatteryOptimization');
}


*转载请注明出处:原文链接:https://cpp.vin/page/145.html

作者近期文章
提示
×
确定
数据库执行: 7次 总耗时: 0.01s
页面加载耗时: 



wechat +447752296473
wechat cpp-blog