注:自 3.0.7 起,不再支持 包名 + receiver.BreventServerReceiver 方式。建议直接使用 sdk 内置 Receiver,或者改成 me.piebridge.brevent.protocol.BreventServerReceiver。
黑阈自 2.7.9 起引入“停用应用”功能。目前停用应用,部分称之为“冻结”,主要有以下流派:
- Root
- 设备管理员
设备管理员只能有一个,且需要删除已有账号及兼容性问题
黑阈的“停用应用”采用 disabled-user 特性,在 Android 7 及以上,shell 就有权限。同时,黑阈服务运行在 shell 层,自 2.8.6 起提供 demo;2.8.9 起,提供权限 API,本文着重说明黑阈停用 API 的使用。
使用方法
- 加入依赖
dependencies {
implementation 'me.piebridge:brevent-protocol-base:3.0.7'
}
-
获得权限并使用
黑阈停用 API 需要黑阈自定义权限BREVENT_DISABLED
,属于危险级别,必须用户显式确认,具体请参阅 Android 6 引入的 运行时权限。 -
依赖包含内容
-
两个权限
- android.permission.INTERNET
黑阈服务运行在本地网络,需要网络权限才能访问 - me.piebridge.brevent.permission.BREVENT_DISABLED
使用黑阈停用 API 必须要获取 BREVENT_DISABLED 权限
- android.permission.INTERNET
-
两个组件
默认以下两个组件运行在:brevent
进程,如有需要,请参照 合并多个清单文件 自行修改。- BreventServerReceiver
黑阈服务启动时,接收黑阈服务发出的 token - BreventProtocolProvider
提供多进程下的 token 共享
- BreventServerReceiver
停用 API 限制
- 只能在 启用 与 用户停用 状态切换
本质上,黑阈停用 API 只是一层 wrapper,相关状态请看
getApplicationEnabledSetting。 - 黑阈已激活,且系统支持“停用应用”
特别说明 ,“停用应用”在黑阈中需要支付确认才可以使用;但是,“停用 API”不需要支付确认。 - 需要本地网络权限
黑阈服务运行在 shell 层,黑阈及黑阈 API 使用 socket 与本地网络通讯。
API (BreventDisabled) 介绍
使用方法:
Brevent.with(context, new BreventDisabled());
BreventDisabled.getInstance();
您也可直接参见 demo。
- boolean hasBrevent()
判断是否安装了支持停用 API 的黑阈。 - boolean isAvailable()
判断 API 是否可用。 - List<String> getDisabledPackages(int)
返回用户停用状态应用列表,uid 为多账号 uid,不支持多账户的话,使用 0 即可。 - boolean isDisabled(String, int)
判断应用是否用户停用,也可直接使用 getApplicationEnabledSetting。 - boolean setPackageEnabled(String, int, boolean)
设置是否停用。已经设置返回 true,无法设置返回 false。
安全隐患
- 不正当使用停用 API 可能导致系统不可用。目前黑阈 API 不许停用的应用只有 特别重要 的应用(黑阈内标记为 Android 进程)与黑阈本身;黑阈不许停用的应用额外包括输入法,具有通讯功能的电话与短信。
- 谨慎停用其他接入黑阈停用 API 的应用。您可以使用 getPackagesHoldingPermissions 获取相应清单。
网友评论