This library helps bring up the autostart permission manager of a phone to the user so they can add an app to autostart.
自启动管理器

该库旨在帮助用户打开手机的自启动权限管理界面,以便添加应用程序到自启动列表。
为何使用此库?
在使用Firebase集成云端消息或通知时,我发现运行原生Android操作系统的手机能完美接收通知,而像小米和乐视等OEM厂商定制系统手机则无法接收到FCM调用。
这是因为这些OEM默认会将未识别的应用程序加入黑名单,阻止其在后台运行并接收通知。相比之下,像WhatsApp这类已知应用由OEM列入白名单,可以正常接收通知。
为了绕过这个问题,用户需要允许你的应用自启动,这样应用就能获得在后台运行及监听Firebase消息所需的权限。然而,由于这是特定于OEM的问题,而非Android SDK问题,因此没有官方文档记录的接口用于打开手机的自启动权限管理器。
每个制造商都有各自不同的版本,具有不同的包名。于是,这个库应运而生,旨在汇总所有OEM为其自启动权限管理器使用的包名。
使用方法
Gradle
将以下代码添加至你的模块build.gradle文件:
dependencies {
// ... 其他依赖项
implementation 'com.github.judemanutd:autostarter:1.1.0'
}
Maven
在你的pom.xml文件中添加如下依赖:
<dependency>
<groupId>com.github.judemanutd</groupId>
<artifactId>autostarter</artifactId>
<version>1.1.0</version>
<type>pom</type>
</dependency>
整合库后,调用以下函数会打开手机的自启动权限管理器。函数返回布尔值以表示操作成功还是失败。
参数说明:
- 第二个参数为true时,尝试打开活动;否则仅检查其是否存在。
- 若第三个参数为true,在尝试打开活动时会在意图中添加FLAG_ACTIVITY_NEW_TASK标志。
AutoStartPermissionHelper.getInstance().getAutoStartPermission(context)
要检查手机是否支持此库,可调用以下命令。若第二个参数为true,只有当屏幕受库支持时才返回true;如果为false,只要权限存在(即使屏幕不受支持),就会返回true。
AutoStartPermissionHelper.getInstance().isAutoStartPermissionAvailable(context)
为了使库小巧简洁,我并未包含任何对话框或弹出窗口。如有必要,你可以自行向用户提供消息提示。
对于不运行定制UI或不需要自启动权限的手机,这段代码不会打开新界面。
注意事项
目前,该库支持以下制造商:
- 小米
- 红米
- 乐视为
- 荣耀(未经测试)
- OPPO(未经测试)
- vivo(未经测试)
- 华为
- 三星
- 华硕
- 一加(未经测试)
我会尽可能地为其他制造商增加支持,并欢迎PRs和来自社区的贡献。
相关信息
由于这完全取决于OEM而非Android本身,所以此库利用的底层组件可能会持续变化。更多关于此问题的信息,请参考以下仓库:
项目介绍
This library helps bring up the autostart permission manager of a phone to the user so they can add an app to autostart.