如何在Expo React Native中程序化禁用电池优化或引导用户设置?
解决电池优化禁用的两种方案
一、程序化请求禁用电池优化
Android系统不允许直接通过代码强制禁用电池优化,必须向用户申请权限,以下是实现代码:
- 先在
AndroidManifest.xml中添加权限声明:
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
- 检查应用是否已在电池优化白名单,未在则发起申请:
// 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
相关产品推荐
相关产品推荐

