• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.ability.screenLockFileManager (锁屏敏感数据管理)
2
3<!--Kit: Ability Kit-->
4<!--Subsystem: Security-->
5<!--Owner: @hongjin-li_admin-->
6<!--Designer: @JerryH1011-->
7<!--Tester: @leiyuqian-->
8<!--Adviser: @zengyawen-->
9
10敏感数据密钥在锁屏后会触发销毁,销毁后敏感数据无法读写,需解锁屏幕触发恢复敏感数据密钥后方可访问。本模块提供应用锁屏下敏感数据保护的能力,支持申请和释放锁屏下敏感数据访问权限等。
11
12> **说明:**
13> 本模块首批接口从API version 12 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
14
15## 导入模块
16
17```ts
18import { screenLockFileManager } from '@kit.AbilityKit';
19```
20
21## AccessStatus
22
23表示锁屏下敏感数据访问权限申请的状态枚举。
24
25 **系统能力:** SystemCapability.Security.ScreenLockFileManager
26
27| 名称           | 值   | 说明                     |
28| -------------- | ---- | ------------------------ |
29| ACCESS_DENIED  | -1   | 拒绝授予锁屏下敏感数据访问。 |
30| ACCESS_GRANTED | 0    | 授予锁屏下敏感数据访问。     |
31
32
33## ReleaseStatus
34
35表示锁屏下敏感数据访问权限释放的状态枚举。
36
37 **系统能力:** SystemCapability.Security.ScreenLockFileManager
38
39| 名称 | 值 | 说明 |
40|-----------------|----|----|
41| RELEASE_DENIED |  -1 | 拒绝锁屏下敏感数据访问释放。 |
42| RELEASE_GRANTED |  0  |  释放锁屏下敏感数据访问。  |
43
44## KeyStatus<sup>18+</sup>
45
46表示锁屏下敏感数据访问权限的状态枚举。
47
48 **系统能力:** SystemCapability.Security.ScreenLockFileManager
49
50| 名称 | 值 | 说明 |
51|-----------------|----|----|
52| KEY_NOT_EXIST |  -2 | 应用未开启锁屏敏感数据保护功能。 |
53| KEY_RELEASED |  -1 | 锁屏敏感数据访问权限已释放。 |
54| KEY_EXIST |  0  |  应用可以访问锁屏敏感数据。  |
55
56## screenLockFileManager.acquireAccess
57
58acquireAccess(): AccessStatus
59
60以同步方法申请锁屏下应用敏感数据访问权限。锁屏后,敏感数据无法被访问,但可通过调用该方法,访问本应用的敏感数据。
61
62**系统能力:** SystemCapability.Security.ScreenLockFileManager
63
64**返回值:**
65
66| 类型                                                        | 说明                                  |
67| ----------------------------------------------------------- | ------------------------------------- |
68| [AccessStatus](#accessstatus) | 锁屏下敏感数据访问权限申请的状态。 |
69
70**错误码:**
71
72以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.screenLockFileManager错误码](errorcode-screenLockFileManager.md)。
73
74| 错误码ID | 错误信息                                                     |
75| -------- | ------------------------------------------------------------ |
76| 801 | The specified SystemCapability name was not found. |
77| 29300002 | The system ability work abnormally. |
78| 29300003 | The application is not enabled the data protection under lock screen. |
79| 29300004 | File access is denied. |
80
81**示例:**
82
83```ts
84// 申请锁屏下应用敏感数据访问权限
85import { screenLockFileManager } from '@kit.AbilityKit';
86import { BusinessError } from '@kit.BasicServicesKit';
87import { hilog } from '@kit.PerformanceAnalysisKit';
88
89try {
90    let acquireStatus = screenLockFileManager.acquireAccess();
91    if (acquireStatus === screenLockFileManager.AccessStatus.ACCESS_GRANTED) {
92        hilog.info(0x0000, 'testTag', 'acquireAccess successfully.');
93    }
94} catch (err) {
95    let message = (err as BusinessError).message;
96    hilog.error(0x0000, 'testTag', 'acquireAccess failed: %{public}s', message);
97}
98```
99
100## screenLockFileManager.releaseAccess
101
102releaseAccess(): ReleaseStatus
103
104以同步方法取消锁屏下本应用敏感数据访问权限。
105
106**系统能力:** SystemCapability.Security.ScreenLockFileManager
107
108**返回值:**
109
110| 类型                            | 说明                           |
111| ------------------------------- | ------------------------------ |
112| [ReleaseStatus](#releasestatus) | 锁屏下敏感数据访问权限释放的状态。 |
113
114**错误码:**
115
116以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.screenLockFileManager错误码](errorcode-screenLockFileManager.md)。
117
118| 错误码ID | 错误信息                                                     |
119| -------- | ------------------------------------------------------------ |
120| 801      | The specified SystemCapability name was not found.           |
121| 29300002 | The system ability work abnormally.                          |
122| 29300003 | The application is not enabled the data protection under lock screen. |
123| 29300005 | File access was not acquired. |
124
125**示例:**
126
127```ts
128// 释放锁屏下应用敏感数据访问权限
129import { screenLockFileManager } from '@kit.AbilityKit';
130import { BusinessError } from '@kit.BasicServicesKit';
131import { hilog } from '@kit.PerformanceAnalysisKit';
132
133try {
134    let releaseStatus = screenLockFileManager.releaseAccess();
135    if (releaseStatus === screenLockFileManager.ReleaseStatus.RELEASE_GRANTED) {
136        hilog.info(0x0000, 'testTag', 'releaseAccess successfully.');
137    }
138} catch (err) {
139    let message = (err as BusinessError).message;
140    hilog.error(0x0000, 'testTag', 'releaseAccess failed: %{public}s', message);
141}
142```
143
144## screenLockFileManager.queryAppKeyState<sup>18+</sup>
145
146queryAppKeyState(): KeyStatus
147
148以同步方法查询锁屏下本应用敏感数据访问权限。
149
150**系统能力:** SystemCapability.Security.ScreenLockFileManager
151
152**返回值:**
153
154| 类型                            | 说明                           |
155| ------------------------------- | ------------------------------ |
156| [KeyStatus](#keystatus18) | 锁屏下敏感数据访问权限的状态。 |
157
158**错误码:**
159
160以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.screenLockFileManager错误码](errorcode-screenLockFileManager.md)。
161
162| 错误码ID | 错误信息                                                     |
163| -------- | ------------------------------------------------------------ |
164| 801      | The specified SystemCapability name was not found.           |
165| 29300002 | The system ability work abnormally.                          |
166
167**示例:**
168
169```ts
170// 查询锁屏下应用敏感数据访问权限
171import { screenLockFileManager } from '@kit.AbilityKit';
172import { BusinessError } from '@kit.BasicServicesKit';
173import { hilog } from '@kit.PerformanceAnalysisKit';
174
175try {
176    let keyStatus = screenLockFileManager.queryAppKeyState();
177    if (keyStatus === screenLockFileManager.KeyStatus.KEY_NOT_EXIST) {
178        hilog.info(0x0000, 'testTag', 'Key does not exist.');
179    } else if (keyStatus === screenLockFileManager.KeyStatus.KEY_RELEASED) {
180        hilog.info(0x0000, 'testTag', 'Key has been released.');
181    } else if (keyStatus === screenLockFileManager.KeyStatus.KEY_EXIST) {
182        hilog.info(0x0000, 'testTag', 'Key exists.');
183    }
184} catch (err) {
185    let message = (err as BusinessError).message;
186    hilog.error(0x0000, 'testTag', 'queryAppKeyState failed: %{public}s', message);
187}
188```