如何通过代码从应用跳转三星/小米/华为未监控应用设置页
各品牌安卓设备直达未监控应用设置页代码方案
定制安卓ROM的设置页组件没有公开统一标准,以下是实测可用的跳转实现,覆盖三星、小米、华为主流系统版本:
三星(One UI)
你之前使用的仅指定com.samsung.android.lool包名的写法只能打开设备维护首页,要直达未监控应用页需要指定完整组件名,代码如下:
Intent samsungUnmonitoredIntent = new Intent(); samsungUnmonitoredIntent.setComponent(new ComponentName( "com.samsung.android.lool", "com.samsung.android.sm.ui.battery.BatteryActivity" )); // 传入参数指定直接展示未监控应用列表 samsungUnmonitoredIntent.putExtra("viewType", "unmonitored"); try { startActivity(samsungUnmonitoredIntent); } catch (ActivityNotFoundException e) { // 版本适配兜底:跳转设备维护首页 startActivity(new Intent(Intent.ACTION_VIEW).setPackage("com.samsung.android.lool")); }
小米(MIUI / 澎湃OS)
小米系统对应功能为电池设置中的「不受限应用」列表,跳转代码:
Intent xiaomiUnmonitoredIntent = new Intent(); xiaomiUnmonitoredIntent.setComponent(new ComponentName( "com.miui.powerkeeper", "com.miui.powerkeeper.ui.HiddenAppsConfigActivity" )); // 传入当前应用信息,部分版本可直接定位到当前应用的设置项 xiaomiUnmonitoredIntent.putExtra("package_name", getPackageName()); xiaomiUnmonitoredIntent.putExtra("package_label", getString(R.string.app_name)); try { startActivity(xiaomiUnmonitoredIntent); } catch (ActivityNotFoundException e) { // 兜底跳转安卓原生电池优化设置页 startActivity(new Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS)); }
华为(EMUI / HarmonyOS)
华为系统对应功能为启动管理中的手动管理/后台保护应用列表,跳转代码:
Intent huaweiUnmonitoredIntent = new Intent(); // 适配EMUI 9及以上、HarmonyOS 2/3/4版本 huaweiUnmonitoredIntent.setComponent(new ComponentName( "com.huawei.systemmanager", "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity" )); try { startActivity(huaweiUnmonitoredIntent); } catch (ActivityNotFoundException e) { // 老版本EMUI适配兜底 try { Intent oldVersionIntent = new Intent(); oldVersionIntent.setComponent(new ComponentName( "com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity" )); startActivity(oldVersionIntent); } catch (ActivityNotFoundException ex) { // 最终兜底跳转原生电池优化设置页 startActivity(new Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS)); } }
通用提示
- 所有定制ROM的私有组件跳转必须加异常捕获,系统版本迭代时组件名、参数可能变更,无兜底会直接触发应用崩溃
Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS是安卓原生公开API,所有品牌设备都可识别,可作为全场景最终兜底跳转方案
内容的提问来源于stack exchange,提问作者Ocn
相关产品推荐
相关产品推荐

