You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Expo React Native中程序化禁用电池优化或引导用户设置?

解决电池优化禁用的两种方案

一、程序化请求禁用电池优化

Android系统不允许直接通过代码强制禁用电池优化,必须向用户申请权限,以下是实现代码:

  1. 先在AndroidManifest.xml中添加权限声明:
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
  1. 检查应用是否已在电池优化白名单,未在则发起申请:
// Kotlin 示例
val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
val packageName = packageName
val isIgnored = powerManager.isIgnoringBatteryOptimizations(packageName)

if (!isIgnored) {
    val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).apply {
        data = Uri.parse("package:$packageName")
    }
    startActivity(intent)
}
// Java 示例
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
String packageName = getPackageName();
boolean isIgnored = powerManager.isIgnoringBatteryOptimizations(packageName);

if (!isIgnored) {
    Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
    intent.setData(Uri.parse("package:" + packageName));
    startActivity(intent);
}

注意:该权限仅适用于闹钟、健康监测等特殊场景应用,普通应用滥用可能导致应用审核被拒。

二、引导用户手动进入电池优化设置页面

若无法通过代码申请,可直接跳转至应用详情设置页,引导用户手动操作:

// Kotlin 示例
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
    data = Uri.fromParts("package", packageName, null)
}
startActivity(intent)
// Java 示例
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);

用户进入页面后,可找到「电池优化」选项,将目标应用设置为「不优化」即可。

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:12:06