Alarm Manager在应用关闭时失效,如何引导用户开启后台运行权限?
Android闹钟应用后台权限引导方案
通用跳转应用设置页方法
可直接唤起应用的系统设置详情页,让用户手动开启后台运行权限,核心代码如下:
Java 实现
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri); startActivity(intent);
Kotlin 实现
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) val uri = Uri.fromParts("package", packageName, null) intent.data = uri startActivity(intent)
国内厂商特殊适配
部分国内安卓厂商(小米、华为、OPPO、vivo等)有独立的后台管控体系,通用设置页可能不够直观,可通过判断厂商型号,跳转至对应专属设置页:
- 小米:跳转至「应用管理-权限管理-自启动权限」或「省电策略-无限制」
- 华为:跳转至「应用启动管理」,设置为「手动管理」并开启允许后台活动
- OPPO:跳转至「应用权限-后台管理」,设置为「允许后台运行」
- vivo:跳转至「权限管理-后台耗电管理」,设置为「允许后台运行」
厂商判断与跳转示例:
String manufacturer = Build.MANUFACTURER.toLowerCase(); if (manufacturer.contains("xiaomi")) { Intent intent = new Intent("miui.intent.action.APP_PERM_EDITOR"); intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.PermissionsEditorActivity"); intent.putExtra("extra_pkgname", getPackageName()); startActivity(intent); } else if (manufacturer.contains("huawei")) { Intent intent = new Intent(); intent.setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity")); startActivity(intent); }
注:厂商跳转Intent可能随系统版本更新变化,需针对不同系统版本做适配测试。
引导用户的细节建议
- 跳转前通过弹窗明确告知用户:「为保证闹钟在后台正常运行,请前往设置页面开启应用后台运行权限」
- 用户从设置页返回后,可再次检测权限状态,确认是否已开启
内容的提问来源于stack exchange,提问作者cwz
相关产品推荐
相关产品推荐

