从API版本26.0.1开始,支持查询设备是否允许加载外部二进制文件,以及打开外部二进制源控制开关的设置对话框。
侧载安全管控支持对设备外部二进制文件的加载行为进行管控。应用可通过Device Security Kit提供的接口查询设备是否允许加载外部二进制文件,或引导用户打开设置对话框以开启外部二进制文件加载权限,以支撑侧载安全管控业务。

流程说明:
应用调用Device Security Kit的接口查询设备是否允许加载外部二进制文件。
Device Security Kit接口返回设备是否允许加载外部二进制文件的结果给应用。
应用依据查询结果做业务处理。
以下是查询设备是否允许加载外部二进制文件接口,更多接口及使用方法请参见API参考。
| 接口名 | 描述 |
|---|---|
| isExternalBinaryLoadingEnabled(): Promise<boolean> | 查询设备是否允许加载外部二进制文件。 |
导入侧载安全管控模块及相关公共模块。
import { sideloading } from '@kit.DeviceSecurityKit';
import hilog from '@ohos.hilog'; 查询设备是否允许加载外部二进制文件。
const DOMAIN = 0x0000;
const TAG = 'SideloadingTest';
try {
const result: boolean = await sideloading.isExternalBinaryLoadingEnabled();
hilog.info(DOMAIN, TAG, `isExternalBinaryLoadingEnabled = ${result}`);
if (result) {
// Do something.
} else {
// Do something.
}
} catch (err) {
hilog.error(DOMAIN, TAG, `call isExternalBinaryLoadingEnabled interface failed, errCode:${err?.code}, errMessage:${err?.message}`);
} 
流程说明:
应用执行自身的业务逻辑,判断需要请求用户打开外部二进制加载控制开关
应用(UIAbility或UIExtensionAbility)调用Device Security Kit的接口拉起外部二进制加载控制开关的设置弹窗。
Device Security Kit向用户展示外部二进制加载控制开关的设置弹窗。
用户在设置弹窗中操作外部二进制加载控制开关。
Device Security Kit接口返回外部二进制文件加载状态给应用(UIAbility或UIExtensionAbility)。
应用(UIAbility或UIExtensionAbility)依据返回状态做业务处理。
以下是打开外部二进制加载控制开关设置弹窗接口,更多接口及使用方法请参见API参考。
| 接口名 | 描述 |
|---|---|
| enableExternalBinaryLoadingOnSetting(context: common.Context): Promise<ExternalBinaryLoadingStatus> | 用于UIAbility或UIExtensionAbility弹窗请求用户设置二进制加载管控开关状态,返回本次请求的用户选择开关的结果。 |
导入侧载安全管控模块及相关公共模块。
import { sideloading } from '@kit.DeviceSecurityKit';
import hilog from '@ohos.hilog'; 调用接口打开外部二进制源控制开关的设置对话框,并根据返回状态进行业务处理。
const DOMAIN = 0x0000;
const TAG = 'SideloadingTest';
try {
let context = getContext();
const result: sideloading.ExternalBinaryLoadingStatus = await sideloading.enableExternalBinaryLoadingOnSetting(context);
hilog.info(DOMAIN, TAG, `enableExternalBinaryLoadingOnSetting result = ${result}`);
if (result === sideloading.ExternalBinaryLoadingStatus.ALLOW) {
// Do something.
} else if (result === sideloading.ExternalBinaryLoadingStatus.DENY) {
// Do something.
}
} catch (err) {
hilog.error(DOMAIN, TAG, `call enableExternalBinaryLoadingOnSetting interface failed, errCode:${err?.code}, errMessage:${err?.message}`);
}