AutoStarter:基于 Android 生态的自启动权限管理工具项目

This library helps bring up the autostart permission manager of a phone to the user so they can add an app to autostart.

分支1Tags9
当前项目代码仓暂无内容

自启动管理器

license API

库标识

该库旨在帮助用户打开手机的自启动权限管理界面,以便添加应用程序到自启动列表。

为何使用此库?

在使用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或不需要自启动权限的手机,这段代码不会打开新界面。

注意事项

目前,该库支持以下制造商:

  1. 小米
  2. 红米
  3. 乐视为
  4. 荣耀(未经测试)
  5. OPPO(未经测试)
  6. vivo(未经测试)
  7. 华为
  8. 三星
  9. 华硕
  10. 一加(未经测试)

我会尽可能地为其他制造商增加支持,并欢迎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.

定制我的领域