2022-09-21 02:31:50 +00:00
# **DeviceManager部件**
2021-09-18 10:19:28 +00:00
## 简介
2021-09-23 01:49:31 +00:00
DeviceManager组件在OpenHarmony上提供账号无关的分布式设备的认证组网能力, 并为开发者提供了一套用于分布式设备间监听、发现和认证的接口。
2021-09-18 10:19:28 +00:00
其组成及依赖如下所示:
![](figures/devicemanager_zh.png)
2022-09-21 02:31:50 +00:00
dsoftbus提供能力:
提供设备上下线通知及设备信息,设备认证通道和设备发现能力。
deviceauth提供能力:
提供设备群组管理和群组认证能力。
2021-09-18 10:19:28 +00:00
## 目录
```
2022-09-21 02:31:50 +00:00
foundation/distributedhardware/distributedhardware_device_manager
├── common # 公共能力头文件存放目录
│ ├── include
│ │ ├── dfx # dfx功能头文件存放目录
│ │ └── ipc # ipc功能头文件存放目录
│ │ ├── lite # small
│ │ ├── model # ipc功能模块头文件存放目录
│ │ └── standard # standard
│ └── src
│ ├── dfx # dfx功能实现相关代码
│ └── ipc # ipc公共功能代码
│ ├── lite # small
│ └── standard # standard
├── display # DM显示hap代码
│ └── entry
│ └── src
│ └── main
2022-11-10 11:25:33 +00:00
│ ├── js # DM PIN码显示ServiceExtensionAbility相关JS代码
│ └── resources # DM PIN码显示ServiceExtensionAbility相关资源配置文件目录
2021-09-18 10:19:28 +00:00
├── figures
├── interfaces
2024-10-30 09:23:31 +00:00
| ├── cj # 仓颉接口ffi层实现存放目录
2022-09-21 02:31:50 +00:00
│ ├── inner_kits # 内部接口及实现存放目录
│ │ └── native_cpp # 内部native接口及实现存放目录
│ │ ├── include
│ │ │ ├── ipc # ipc头文件存放目录
│ │ │ │ ├── lite # small
│ │ │ │ └── standard # standard
│ │ │ └── notify # ipc回调通知头文件目录
│ │ └── src
│ │ ├── ipc # ipc功能代码
│ │ │ ├── lite # small
│ │ │ └── standard # standard
│ │ └── notify # ipc回调通知功能代码
│ └── kits # 外部接口及实现存放目录
2023-07-07 03:30:43 +00:00
│ ├── js # 外部JS接口及实现存放目录
│ │ ├── include # 外部JS接口及实现头文件存放目录
│ │ └── src # 外部JS接口及实现代码
2023-07-07 06:11:52 +00:00
| └── js4.0 # 从Openharmony 4.0.9.2版本开始新增外部JS接口及实现存放目录
2023-07-07 03:30:43 +00:00
| ├── include # 新增外部JS接口及实现头文件存放目录
| └── src # 新增外部JS接口及实现代码
|
2022-09-21 02:31:50 +00:00
├── sa_profile # SA进程配置相关文件存放目录
2021-09-18 10:19:28 +00:00
├── services
2022-09-21 02:31:50 +00:00
│ ├── implementation # devicemanagerservice服务实现核心代码
│ │ ├── include
2022-11-10 11:25:33 +00:00
│ │ │ ├── ability # 与PIN码显示ServiceExtensionAbility拉起管理相关头文件
2022-09-21 02:31:50 +00:00
│ │ │ ├── adapter # DM适配扩展功能相关头文件
│ │ │ ├── authentication # device_auth交互相关头文件
│ │ │ ├── config # DM适配扩展相关配置功能头文件
│ │ │ ├── credential # 凭据管理功能相关头文件
│ │ │ ├── dependency # 外部依赖模块相关头文件
│ │ │ │ ├── commonevent # 事件处理功能相关头文件
│ │ │ │ ├── hichain # 与hichain功能交互相关头文件
│ │ │ │ ├── mini # mini
│ │ │ │ ├── multipleuser # 多用户功能相关头文件
│ │ │ │ ├── softbus # 与软总线功能交互相关头文件
│ │ │ │ └── timer # 定时器处理相关头文件
│ │ │ ├── devicestate # 设备状态管理功能相关头文件
│ │ │ ├── discovery # 设备发现功能相关头文件
│ │ │ ├── dispath # L0上功能实现相关头文件
│ │ │ └── publish # 设备主动发现功能相关头文件
│ │ └── src
2022-11-10 11:25:33 +00:00
│ │ ├── ability # 与PIN码显示ServiceExtensionAbility拉起管理相关功能代码
2022-09-21 02:31:50 +00:00
│ │ ├── adapter # DM适配扩展功能代码
│ │ ├── authentication # device_auth交互相关核心代码
│ │ ├── config # DM适配扩展相关配置功能代码
│ │ ├── credential # 凭据管理功能代码
│ │ ├── dependency # 外部依赖模块功能代码
│ │ │ ├── commonevent # 事件处理功能代码
│ │ │ ├── hichain # 与hichain功能交互代码
│ │ │ ├── mini # mini
│ │ │ ├── multipleuser # 多用户功能代码
│ │ │ ├── softbus # 与软总线功能交互代码
│ │ │ └── timer # 定时器处理相关功能代码
│ │ ├── devicestate # 设备状态管理功能代码
│ │ ├── discovery # 设备发现功能代码
│ │ ├── dispath # mini上功能实现代码
│ │ └── publish # 设备主动发现功能
│ └── service # devicemanagerservice服务实现核心代码
│ ├── include
│ │ ├── ipc # 进程间通信相关头文件
│ │ │ ├── lite # small
│ │ │ └── standard # standard
│ │ └── softbus # 软总线相关头文件
│ └── src
│ ├── ipc # 进程间通信相关功能代码
│ │ ├── lite # small
│ │ └── standard # standard
│ └── softbus # 通道建立功能核心代码
└── utils # 公共能力头文件存放目录
2021-09-18 10:19:28 +00:00
├── include
2022-09-21 02:31:50 +00:00
│ ├── fwkload # 拉起其他sa功能相关头文件
│ └── permission # 权限校验相关头文件存放目录
2021-09-18 10:19:28 +00:00
└── src
2022-09-21 02:31:50 +00:00
├── fwkload # 拉起其他sa功能相关功能代码
└── permission # 权限校验相关功能代码
2021-09-18 10:19:28 +00:00
```
## 约束
- 开发语言: JS、C++
- 适用于Hi3516DV300单板等OpenHarmony设备
2023-06-27 08:58:19 +00:00
## 废弃接口说明
2021-09-18 10:19:28 +00:00
2023-06-27 08:24:57 +00:00
该部分接口暂时可继续使用,但是暂停维护,建议使用新接口进行开发。
2021-09-18 10:19:28 +00:00
当前版本设备管理服务不具备权限管理的能力, 接口中的system api仅供系统调用, 后续版本会进行严格的权限管控。
2021-09-23 01:49:31 +00:00
接口参见[**interface_sdk-js仓库的**](https://gitee.com/openharmony/interface_sdk-js/) *ohos.distributedHardware.deviceManager.d.ts*
2021-09-18 10:19:28 +00:00
- 公共接口:
使用DeviceManager相关接口之前, 需要通过createDeviceManager接口创建DeviceManager实例;
不使用DeviceManager接口的时候需要释放对应的DeviceManager实例。
| 原型 | 描述 |
| ------------------------------------------------------------ | ------------------------------- |
2022-10-18 07:01:45 +00:00
| createDeviceManager(bundleName: string, callback: AsyncCallback< DeviceManager> ): void; | 以异步方法获取DeviceManager实例 |
2021-09-18 10:19:28 +00:00
| release(): void; | 释放DeviceManager实例 |
2022-02-22 02:59:23 +00:00
- 系统能力接口:
2021-09-18 10:19:28 +00:00
2022-02-22 02:59:23 +00:00
提供可信设备列表获取、可信设备状态监听、周边设备发现、设备认证等相关接口,该部分作为系统能力接口,仅供系统应用调用。
2021-09-18 10:19:28 +00:00
2022-02-22 02:59:23 +00:00
开始设备发现、停止发现设备接口要配对使用, 使用同一个subscribeId。
2021-09-18 10:19:28 +00:00
2022-02-22 02:59:23 +00:00
| 原型 | 描述 |
| ------------------------------------------------------------ | -------------------- |
2022-10-18 06:59:38 +00:00
| getTrustedDeviceListSync(): Array< DeviceInfo> ; | 获取信任设备列表 |
2022-10-18 09:34:47 +00:00
| getTrustedDeviceList(callback:AsyncCallback< Array< DeviceInfo> > ): void; | 获取信任设备列表 |
| getTrustedDeviceList(): Promise< Array< DeviceInfo> > ; | 获取信任设备列表 |
2022-10-17 03:10:43 +00:00
| getLocalDeviceInfoSync(): DeviceInfo; | 获取本地设备信息 |
2022-10-18 06:59:38 +00:00
| getLocalDeviceInfo(callback:AsyncCallback< DeviceInfo> ): void; | 获取本地设备信息 |
| getLocalDeviceInfo(): Promise< DeviceInfo> ; | 获取本地设备信息 |
2022-10-18 09:34:47 +00:00
| on(type: 'deviceStateChange', callback: Callback< { action: DeviceStateChangeAction, device: DeviceInfo }> ): void; | 设备状态变更回调 |
| off(type: 'deviceStateChange', callback?: Callback< { action: DeviceStateChangeAction, device: DeviceInfo }> ): void; | 取消设备状态变更回调 |
2021-09-18 10:19:28 +00:00
| on(type: 'serviceDie', callback: () => void): void; | 服务错误回调 |
| off(type: 'serviceDie', callback?: () => void): void; | 取消服务错误回调 |
| startDeviceDiscovery(subscribeInfo: SubscribeInfo): void; | 开始设备发现 |
| stopDeviceDiscovery(subscribeId: number): void; | 停止发现设备 |
2022-10-18 09:34:47 +00:00
| authenticateDevice(deviceInfo: DeviceInfo, authParam: AuthParam, callback: AsyncCallback< {deviceId: string, pinToken ?: number}> ): void; | 设备认证接口 |
2022-10-17 03:10:43 +00:00
| unAuthenticateDevice(deviceInfo: DeviceInfo): void; | 解除认证设备 |
2022-10-13 07:41:27 +00:00
| setUserOperation(operateAction: number, params: string): void; | 设置用户ui操作行为 |
2022-10-18 09:34:47 +00:00
| verifyAuthInfo(authInfo: AuthInfo, callback: AsyncCallback< {deviceId: string, level: number}> ): void; | 设备认证信息校验 |
2022-10-18 02:05:45 +00:00
| startDeviceDiscovery(subscribeInfo: SubscribeInfo, filterOptions?: string): void; | 发现周边设备 |
| publishDeviceDiscovery(publishInfo: PublishInfo): void; | 发布设备发现 |
| unPublishDeviceDiscovery(publishId: number): void; | 停止发布设备发现 |
2022-10-18 09:34:47 +00:00
| on(type: 'deviceFound', callback: Callback< { subscribeId: number, device: DeviceInfo }> ): void; | 发现设备列表回调 |
| off(type: 'deviceFound', callback?: Callback< { subscribeId: number, device: DeviceInfo }> ): void; | 取消发现设备列表回调 |
| on(type: 'discoverFail', callback: Callback< { subscribeId: number, reason: number }> ): void; | 发现设备失败回调 |
| off(type: 'discoverFail', callback?: Callback< { subscribeId: number, reason: number }> ): void; | 取消发现设备失败回调 |
| on(type: 'publishSuccess', callback: Callback< { publishId: number }> ): void; | 发布设备成功回调 |
| off(type: 'publishSuccess', callback?: Callback< { publishId: number }> ): void; | 取消发布设备成功回调 |
| on(type: 'publishFail', callback: Callback< { publishId: number, reason: number }> ): void; | 发布设备失败回调 |
| off(type: 'publishFail', callback?: Callback< { publishId: number, reason: number }> ): void; | 取消发布设备失败回调 |
| on(type: 'uiStateChange', callback: Callback< { param: string}> ): void; | ui状态变更回调 |
| off(type: 'uiStateChange', callback?: Callback< { param: string}> ): void; | 取消ui状态变更回调 |
2022-02-22 02:59:23 +00:00
2023-06-27 08:58:19 +00:00
## 新增接口说明
2023-06-27 08:24:57 +00:00
2023-07-07 06:11:52 +00:00
从Openharmony 4.0.9.2版本开始,新增设备管理接口。
2023-06-27 08:24:57 +00:00
接口参见[**interface_sdk-js仓库的**](https://gitee.com/openharmony/interface_sdk-js/) *ohos.distributedDeviceManager.d.ts*
- 公共接口:
2023-06-27 09:06:31 +00:00
调用以下接口, 需要申请ohos.permission.DISTRIBUTED_DATASYNC权限才能正常调用。
2023-06-27 08:58:19 +00:00
2023-06-27 08:24:57 +00:00
使用DeviceManager相关接口之前, 需要通过createDeviceManager接口创建DeviceManager实例;
不使用DeviceManager接口的时候需要释放对应的DeviceManager实例。
2023-06-27 08:58:19 +00:00
提供可信设备列表获取、可信设备状态监听、周边设备发现、设备认证等相关接口,支持三方应用调用。
2023-06-27 08:24:57 +00:00
| 原型 | 描述 |
| ------------------------------------------------------------ | ------------------------------- |
2023-07-13 02:08:57 +00:00
| createDeviceManager(bundleName: string): DeviceManager; | 创建一个设备管理实例。设备管理实例是分布式设备管理方法的调用入口。用于获取可信设备和本地设备的相关信息。 |
| releaseDeviceManager(deviceManager: DeviceManager): void; | 设备管理实例不再使用后, 通过该方法释放DeviceManager实例。 |
| getAvailableDeviceListSync(): Array< DeviceBasicInfo> ; | 同步获取所有可信设备列表。 |
| getAvailableDeviceList(callback:AsyncCallback< Array< DeviceBasicInfo> > ): void; | 获取所有可信设备列表。使用callback异步回调。 |
| getAvailableDeviceList(): Promise< Array< DeviceBasicInfo> > ; | 获取所有可信设备列表。使用Promise异步回调。 |
| getLocalDeviceNetworkId(): string; | 获取本地设备网络标识。 |
| getLocalDeviceName(): string; | 获取本地设备名称。 |
| getLocalDeviceType(): number; | 获取本地设备类型。 |
| getLocalDeviceId(): string; | 获取本地设备id。 |
| getDeviceName(networkId: string): string; | 通过指定设备的网络标识获取该设备名称。 |
| getDeviceType(networkId: string): number; | 通过指定设备的网络标识获取该设备类型。 |
| startDiscovering(discoverParam: {[key: string]: Object} , filterOptions?: {[key: string]: Object} ): void; | 发现周边设备。发现状态持续两分钟, 超过两分钟, 会停止发现, 最大发现数量99个。 |
| stopDiscovering(): void; | 停止发现周边设备。 |
| bindTarget(deviceId: string, bindParam: {[key: string]: Object} , callback: AsyncCallback< {deviceId: string}>): void; | 认证设备。 |
| unbindTarget(deviceId: string): void; | 解除认证设备。 |
| on(type: 'deviceStateChange', callback: Callback< { action: DeviceStateChange, device: DeviceBasicInfo }> ): void; | 注册设备状态回调。 |
| off(type: 'deviceStateChange', callback?: Callback< { action: DeviceStateChange, device: DeviceBasicInfo }> ): void; | 取消注册设备状态回调。 |
| on(type: 'discoverSuccess', callback: Callback< { device: DeviceBasicInfo }> ): void; | 注册发现设备成功回调监听。 |
| off(type: 'discoverSuccess', callback?: Callback< { device: DeviceBasicInfo }> ): void; | 取消注册设备发现成功回调。 |
| on(type: 'deviceNameChange', callback: Callback< { deviceName: string }> ): void; | 注册设备名称变更回调监听。 |
| off(type: 'deviceNameChange', callback?: Callback< { deviceName: string }> ): void; | 取消注册设备名称变更回调监听。 |
| on(type: 'discoverFailure', callback: Callback< { reason: number }> ): void; | 注册设备发现失败回调监听。 |
| off(type: 'discoverFailure', callback?: Callback< { reason: number }> ): void; | 取消注册设备发现失败回调。 |
| on(type: 'serviceDie', callback?: Callback< {}> ): void; | 注册设备管理服务死亡监听。 |
| off(type: 'serviceDie', callback?: Callback< {}> ): void; | 取消注册设备管理服务死亡监听。 |
2023-06-27 08:24:57 +00:00
- 示例如下:
```js
2023-06-27 08:58:19 +00:00
try {
2023-07-13 02:08:57 +00:00
let dmClass = deviceManager.createDeviceManager("ohos.samples.jshelloworld");
2023-06-27 08:58:19 +00:00
} catch(err) {
2023-07-13 02:08:57 +00:00
console.error("createDeviceManager errCode:" + err.code + ",errMessage:" + err.message);
2023-06-27 08:58:19 +00:00
}
2023-06-27 08:24:57 +00:00
try {
// 注册设备管理服务死亡监听。
2023-07-13 02:08:57 +00:00
dmClass.on("serviceDie", () => {
console.info("serviceDie on");
});
} catch (err) {
console.error("serviceDie errCode:" + err.code + ",errMessage:" + err.message);
}
try {
dmClass.on('deviceStateChange', (data) => {
console.info("deviceStateChange on:" + JSON.stringify(data));
});
2023-06-27 08:24:57 +00:00
} catch (err) {
2023-07-13 02:08:57 +00:00
console.error("deviceStateChange errCode:" + err.code + ",errMessage:" + err.message);
2023-06-27 08:24:57 +00:00
}
// 同步获取所有可信设备列表。
try {
let trustList = dmClass.getAvailableDeviceListSync();
2023-06-27 08:58:19 +00:00
console.log("trustList:" + JSON.stringify(this.trustList));
2023-06-27 08:24:57 +00:00
} catch(err) {
2023-06-27 08:58:19 +00:00
console.log("getAvailableDeviceList failed: " + JSON.stringify(err));
2023-06-27 08:24:57 +00:00
}
2023-07-13 02:08:57 +00:00
// 获取本地设备类型。
var data = dmClass.getLocalDeviceType();
2023-06-27 08:24:57 +00:00
2023-07-13 02:08:57 +00:00
// 获取本地设备名称。
var data = dmClass.getLocalDeviceName();
2023-06-27 08:24:57 +00:00
// 发现周边设备。
try {
// 注册发现设备成功回调监听。
dmClass.on('discoverSuccess', (data) => {
if (data == null) {
2023-06-27 08:58:19 +00:00
console.log("discoverSuccess error data = null")
2023-06-27 08:24:57 +00:00
return;
}
console.info(TAG + "discoverSuccess:" + JSON.stringify(data));
});
// 注册设备发现失败回调监听。
2023-07-13 02:08:57 +00:00
dmClass.on('discoverFailure', (data) => {
console.info("discoverFailure on:" + JSON.stringify(data));
2023-06-27 08:24:57 +00:00
});
2023-07-13 02:08:57 +00:00
var discoverParam = {
'discoverTargetType': 1
};
2023-07-07 03:30:43 +00:00
var filterOptions = {
2023-07-13 02:08:57 +00:00
'availableStatus': 1,
'discoverDistance': 50,
'authenticationStatus': 0,
'authorizationType': 0
2023-07-07 03:30:43 +00:00
};
2023-07-13 02:08:57 +00:00
dmClass.startDiscovering(discoverParam, filterOptions); // 当有设备发现时, 通过discoverSuccess回调通知给应用程序
2023-06-27 08:24:57 +00:00
} catch (err) {
2023-06-28 09:10:47 +00:00
console.log("startDiscovering err:" + err.code + "," + err.message);
2023-06-27 08:24:57 +00:00
}
// 停止发现周边设备。
try {
2023-07-07 03:30:43 +00:00
dmClass.stopDiscovering();
2023-06-27 08:24:57 +00:00
// 取消注册设备发现成功回调。
dmClass.off('discoverSuccess');
// 取消注册设备发现失败回调。
2023-07-13 02:08:57 +00:00
dmClass.off('discoverFailure');
2023-06-27 08:24:57 +00:00
} catch (err) {
2023-06-27 08:58:19 +00:00
console.log("err:" + err.code + "," + err.message);
2023-06-27 08:24:57 +00:00
}
// 设备认证
2023-07-13 02:08:57 +00:00
var deviceId ="XXXXXXXX";
let bindParam = {
'bindType': 1,// 认证类型: 1 - 无帐号PIN码认证
'targetPkgName': 'xxxx',
'appName': 'xxxx',
'appOperation': 'xxxx',
'customDescription': 'xxxx'
2023-06-27 08:24:57 +00:00
}
try {
2023-07-13 02:37:06 +00:00
// 设备认证
2023-06-28 09:10:47 +00:00
dmClass.bindTarget(deviceId, bindParam, (err, data) => {
2023-06-27 08:24:57 +00:00
if (err) {
2023-06-28 09:10:47 +00:00
console.info(TAG + "bindTarget err:" + JSON.stringify(err));
2023-07-13 02:08:57 +00:00
return;
2023-06-27 08:24:57 +00:00
} else {
2023-06-28 09:10:47 +00:00
console.info(TAG + "bindTarget result:" + JSON.stringify(data));
2023-06-27 08:24:57 +00:00
let token = data.pinTone;
}
});
} catch (err) {
2023-06-28 09:10:47 +00:00
console.log("bindTarget err:" + err.code + "," + err.message);
2023-06-27 08:24:57 +00:00
}
// 设备取消认证
try {
var deviceId = "xxxxxxxx";
2023-07-13 02:08:57 +00:00
let result = dmClass.unbindTarget(deviceId);
2023-06-28 09:10:47 +00:00
console.log("unbindTarget last device: " + JSON.stringify(deviceId) + " and result = "
2023-06-27 08:24:57 +00:00
+ result);
} catch (err) {
2023-06-28 09:10:47 +00:00
console.log("unbindTarget err:" + err.code + "," + err.message);
2023-06-27 08:24:57 +00:00
}
try {
// 取消注册设备管理服务死亡监听。
dmClass.off('serviceDie');
// 取消注册设备状态回调。
2023-07-13 02:37:06 +00:00
dmClass.off('deviceStateChange', (data) => {
console.info('deviceStateChange' + JSON.stringify(data));
});
2023-06-27 08:24:57 +00:00
// 释放DeviceManager实例。
2023-10-09 02:53:25 +00:00
deviceManager.releaseDeviceManager(dmClass);
2023-06-27 08:24:57 +00:00
} catch (err) {
2023-06-27 08:58:19 +00:00
console.log("err:" + err.code + "," + err.message);
2023-06-27 08:24:57 +00:00
}
```
- 系统接口:
2023-06-28 09:10:47 +00:00
该部分接口仅支持系统应用调用。
2023-06-27 08:58:19 +00:00
调用以下接口, 需要申请ohos.permission.ACCESSS_SERVICE_DM权限才能正常调用。
2023-06-27 08:24:57 +00:00
| 原型 | 描述 |
| ------------------------------------------------------------ | -------------------- |
2023-07-13 02:08:57 +00:00
| replyUiAction(action: number, actionResult: string): void; | 回复用户ui操作行为。此接口只能被devicemanager的PIN码hap使用。 |
| on(type: 'replyResult', callback: Callback< { param: string}> ): void; | 回复UI操作结果回调。 |
| off(type: 'replyResult', callback?: Callback< { param: string}> ): void; | 取消回复UI操作结果回调。 |
2023-06-27 08:24:57 +00:00
- 示例如下:
```js
// 设置用户ui操作行为
2023-06-28 09:10:47 +00:00
/* action = 0 - 允许授权
action = 1 - 取消授权
action = 2 - 授权框用户操作超时
action = 3 - 取消pin码框展示
action = 4 - 取消pin码输入框展示
action = 5 - pin码输入框确定操作
2023-06-27 08:24:57 +00:00
*/
2023-06-28 09:10:47 +00:00
try {
2023-07-13 02:37:06 +00:00
let action = 0;
dmClass.replyUiAction(action, "extra")
2023-06-28 09:10:47 +00:00
dmClass.on('replyResult', (data) => {
console.log("replyResult executed, dialog closed" + JSON.stringify(data))
2023-06-27 08:24:57 +00:00
var tmpStr = JSON.parse(data.param)
2023-07-13 02:37:06 +00:00
var isShow = tmpStr.verifyFailed
console.log("replyResult executed, dialog closed" + isShow)
2023-06-28 09:10:47 +00:00
});
} catch (err) {
console.log("err:" + err.code + "," + err.message);
}
2023-06-27 08:24:57 +00:00
```
2024-07-02 11:30:42 +00:00
详细接口说明请参考[**API文档**](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-distributedservice-kit/js-apis-distributedDeviceManager.md)
2023-06-27 08:24:57 +00:00
2022-11-10 11:25:33 +00:00
## 系统弹框ServiceExtensionAbility
2021-09-18 10:19:28 +00:00
当前版本只支持PIN码认证, 需要提供PIN码认证的授权提示界面、PIN码显示界面、PIN码输入界面;
2022-10-13 07:41:27 +00:00
当前, 由于系统通过native层直接进行弹窗的能力尚不具备, 这里使用ServiceExtensionAbility来进行对应界面的弹窗。
2021-09-18 10:19:28 +00:00
2022-10-13 07:41:27 +00:00
该ServiceExtensionAbility为: DeviceManager_UI.hap, 作为系统应用进行预置。
2021-09-18 10:19:28 +00:00
- 编译运行:
将devicemanager/display工程导入DevEco Studio 2.2 Beta1, 复制display目录下的@ohos.distributedHardware.deviceManager.d.ts文件到Sdk\js\2.2.0.1\api\common目录下, 进行编译构建及运行调试.
- 编译环境依赖: IDE 2.2 SDK6
2022-11-10 11:25:33 +00:00
- DeviceManager_UI.hap包源码存放位置: [device_manager仓库](https://gitee.com/openharmony/distributedhardware_device_manager/tree/master/display)
2021-09-18 10:19:28 +00:00
- UI显示:
2022-11-10 11:25:33 +00:00
DeviceManager作为认证被控端, 授权提示界面、PIN码显示界面由DeviceManager_UI ServiceExtensionAbility默认进行显示;
2021-09-18 10:19:28 +00:00
2022-11-10 11:25:33 +00:00
DeviceManager作为认证发起端, PIN码输入界面可以选择由DeviceManager_UI ServiceExtensionAbility进行显示, 还是由开发者自行显示。开发者如需自己定制PIN码输入界面, 需要在authenticateDevice接口的认证参数AuthParam中, extraInfo属性里面指定displayOwner参数为1。
2021-09-18 10:19:28 +00:00
2022-09-21 07:03:59 +00:00
## 相关仓
2021-09-18 10:19:28 +00:00
****
[**interface_sdk-js** ](https://gitee.com/openharmony/interface_sdk-js/ )
2022-05-11 14:50:14 +00:00
2021-09-18 10:19:28 +00:00
[**applications_hap** ](https://gitee.com/openharmony/applications_hap )