1e41f4b71Sopenharmony_ci# @ohos.fileshare (文件分享)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci该模块提供文件分享能力,提供系统应用将公共目录文件统一资源标志符(Uniform Resource Identifier,URI)以读写权限授权给其他应用的接口,授权后应用可通过[@ohos.file.fs](js-apis-file-fs.md)的相关接口进行相关open、read、write等操作,实现文件分享。
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci> **说明:**
6e41f4b71Sopenharmony_ci>
7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci## 导入模块
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci```ts
12e41f4b71Sopenharmony_ciimport fileShare from '@ohos.fileshare';
13e41f4b71Sopenharmony_ci```
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci## OperationMode<sup>11+</sup>
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci枚举,授予或使能权限的URI访问模式。
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.FileManagement.AppFileService.FolderAuthorization
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci| 名称  | 值   | 说明  |
22e41f4b71Sopenharmony_ci| ----- |-----|-----|
23e41f4b71Sopenharmony_ci| READ_MODE  | 0b1 | 读权限 |
24e41f4b71Sopenharmony_ci| WRITE_MODE  | 0b10 | 写权限 |
25e41f4b71Sopenharmony_ci
26e41f4b71Sopenharmony_ci## PolicyErrorCode<sup>11+</sup>
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_ci枚举,授予或使能权限策略失败的URI对应的错误码。
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.FileManagement.AppFileService.FolderAuthorization
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci| 名称  | 值   | 说明        |
33e41f4b71Sopenharmony_ci| ----- |-----|-----------|
34e41f4b71Sopenharmony_ci| PERSISTENCE_FORBIDDEN  | 1   | URI禁止被持久化 |
35e41f4b71Sopenharmony_ci| INVALID_MODE  | 2   | 无效的模式     |
36e41f4b71Sopenharmony_ci| INVALID_PATH  | 3   | 无效的路径     |
37e41f4b71Sopenharmony_ci| PERMISSION_NOT_PERSISTED<sup>12+</sup>  | 4   | 权限没有被持久化 |
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci## PolicyErrorResult<sup>11+</sup>
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci授予或使能权限失败的URI策略结果,支持persistPermission、revokePermission、activatePermission、deactivatePermission接口抛出错误时使用。
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.AppFileService.FolderAuthorization
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci| 名称      | 类型                                   | 必填 | 说明                |
46e41f4b71Sopenharmony_ci|---------|--------------------------------------|-----|-----------------------|
47e41f4b71Sopenharmony_ci| uri     | string                               | 是  | 授予或使能权限失败的URI。         |
48e41f4b71Sopenharmony_ci| code    | [PolicyErrorCode](#policyerrorcode11) | 是  | 授权策略失败的URI对应的错误码。 |
49e41f4b71Sopenharmony_ci| message | string                               | 是   | 授权策略失败的URI对应的原因。  |
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ci## PolicyInfo<sup>11+</sup>
52e41f4b71Sopenharmony_ci
53e41f4b71Sopenharmony_ci需要授予或使能权限URI的策略信息。
54e41f4b71Sopenharmony_ci
55e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.AppFileService.FolderAuthorization
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ci| 名称            | 类型       | 必填  | 说明                                                                                                                                                |
58e41f4b71Sopenharmony_ci|---------------| ---------|-----|---------------------------------------------------------------------------------------------------------------------------------------------------|
59e41f4b71Sopenharmony_ci| uri           | string     | 是   | 需要授予或使能权限的URI。                                                                                                                                    |
60e41f4b71Sopenharmony_ci| operationMode | number  | 是   | 授予或使能权限的URI访问模式,参考[OperationMode](#operationmode11),例如:<br/>  fileShare.OperationMode.READ_MODE :允许读授权 <br/>  fileShare.OperationMode.READ_MODE  \| fileShare.OperationMode.WRITE_MODE :允许读写授权 |
61e41f4b71Sopenharmony_ci
62e41f4b71Sopenharmony_ci## fileShare.persistPermission<sup>11+</sup>
63e41f4b71Sopenharmony_ci
64e41f4b71Sopenharmony_cipersistPermission(policies: Array&lt;PolicyInfo>): Promise&lt;void&gt;
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ci异步方法对所选择的多个文件或目录URI持久化授权,以promise形式返回结果,该接口仅对具有该系统能力的设备开放。
67e41f4b71Sopenharmony_ci
68e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.FILE_ACCESS_PERSIST
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.FileManagement.AppFileService.FolderAuthorization
71e41f4b71Sopenharmony_ci
72e41f4b71Sopenharmony_ci**参数:**
73e41f4b71Sopenharmony_ci
74e41f4b71Sopenharmony_ci| 参数名 | 类型                                    | 必填 | 说明                      |
75e41f4b71Sopenharmony_ci| -------- |---------------------------------------| -------- |-------------------------|
76e41f4b71Sopenharmony_ci| policies| Array&lt;[PolicyInfo](#policyinfo11)> | 是 | 需要授权URI的策略信息,policies数组大小上限为500。|
77e41f4b71Sopenharmony_ci
78e41f4b71Sopenharmony_ci**返回值:**
79e41f4b71Sopenharmony_ci
80e41f4b71Sopenharmony_ci| 类型 | 说明 |
81e41f4b71Sopenharmony_ci| -------- | -------- |
82e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
83e41f4b71Sopenharmony_ci
84e41f4b71Sopenharmony_ci**错误码:**
85e41f4b71Sopenharmony_ci
86e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
87e41f4b71Sopenharmony_ci如果存在URI授权失败,则抛出13900001错误码,且失败URI信息将抛出异常data属性中以Array<[PolicyErrorResult](#policyerrorresult11)>形式提供错误信息。
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci| 错误码ID    | 错误信息       |
90e41f4b71Sopenharmony_ci|----------| --------- |
91e41f4b71Sopenharmony_ci| 201      | Permission verification failed, usually the result returned by VerifyAccessToken.|
92e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
93e41f4b71Sopenharmony_ci| 801      | Capability not supported. |
94e41f4b71Sopenharmony_ci| 13900001 | Operation not permitted.            |
95e41f4b71Sopenharmony_ci| 13900042 | Unknown error                          |
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci**示例:**
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci  ```ts
100e41f4b71Sopenharmony_ci  import { BusinessError } from '@ohos.base';
101e41f4b71Sopenharmony_ci  import picker from '@ohos.file.picker';
102e41f4b71Sopenharmony_ci  
103e41f4b71Sopenharmony_ci  async function persistPermissionExample() {
104e41f4b71Sopenharmony_ci    try {
105e41f4b71Sopenharmony_ci      let DocumentSelectOptions = new picker.DocumentSelectOptions();
106e41f4b71Sopenharmony_ci      let documentPicker = new picker.DocumentViewPicker();
107e41f4b71Sopenharmony_ci      let uris = await documentPicker.select(DocumentSelectOptions);
108e41f4b71Sopenharmony_ci      let policyInfo: fileShare.PolicyInfo = {
109e41f4b71Sopenharmony_ci        uri: uris[0], 
110e41f4b71Sopenharmony_ci        operationMode: fileShare.OperationMode.READ_MODE,
111e41f4b71Sopenharmony_ci      };
112e41f4b71Sopenharmony_ci      let policies: Array<fileShare.PolicyInfo> = [policyInfo];
113e41f4b71Sopenharmony_ci      fileShare.persistPermission(policies).then(() => {
114e41f4b71Sopenharmony_ci        console.info("persistPermission successfully");
115e41f4b71Sopenharmony_ci      }).catch((err: BusinessError<Array<fileShare.PolicyErrorResult>>) => {
116e41f4b71Sopenharmony_ci        console.error("persistPermission failed with error message: " + err.message + ", error code: " + err.code);
117e41f4b71Sopenharmony_ci        if (err.code == 13900001 && err.data) {
118e41f4b71Sopenharmony_ci          for (let i = 0; i < err.data.length; i++) {
119e41f4b71Sopenharmony_ci            console.error("error code : " + JSON.stringify(err.data[i].code));
120e41f4b71Sopenharmony_ci            console.error("error uri : " + JSON.stringify(err.data[i].uri));
121e41f4b71Sopenharmony_ci            console.error("error reason : " + JSON.stringify(err.data[i].message));
122e41f4b71Sopenharmony_ci          }
123e41f4b71Sopenharmony_ci        }
124e41f4b71Sopenharmony_ci      });
125e41f4b71Sopenharmony_ci    } catch (error) {
126e41f4b71Sopenharmony_ci      let err: BusinessError = error as BusinessError;
127e41f4b71Sopenharmony_ci      console.error('persistPermission failed with err: ' + JSON.stringify(err));
128e41f4b71Sopenharmony_ci    }
129e41f4b71Sopenharmony_ci  }
130e41f4b71Sopenharmony_ci  ```
131e41f4b71Sopenharmony_ci
132e41f4b71Sopenharmony_ci## fileShare.revokePermission<sup>11+</sup>
133e41f4b71Sopenharmony_ci
134e41f4b71Sopenharmony_cirevokePermission(policies: Array&lt;PolicyInfo&gt;): Promise&lt;void&gt;
135e41f4b71Sopenharmony_ci
136e41f4b71Sopenharmony_ci异步方法对所选择的多个文件或目录uri取消持久化授权,以promise形式返回结果,该接口仅对具有该系统能力的设备开放。
137e41f4b71Sopenharmony_ci
138e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.FILE_ACCESS_PERSIST
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.FileManagement.AppFileService.FolderAuthorization
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci**参数:**
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ci| 参数名 | 类型                 | 必填 | 说明                      |
145e41f4b71Sopenharmony_ci| -------- |--------------------| -------- |-------------------------|
146e41f4b71Sopenharmony_ci| policies| Array&lt;[PolicyInfo](#policyinfo11)> | 是 | 需要授权URI的策略信息,policies数组大小上限为500。|
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ci**返回值:**
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci| 类型 | 说明 |
151e41f4b71Sopenharmony_ci| -------- | -------- |
152e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
153e41f4b71Sopenharmony_ci
154e41f4b71Sopenharmony_ci**错误码:**
155e41f4b71Sopenharmony_ci
156e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
157e41f4b71Sopenharmony_ci如果存在URI取消授权失败,则抛出13900001错误码,且失败URI信息将抛出异常data属性中以Array<[PolicyErrorResult](#policyerrorresult11)>形式提供错误信息。
158e41f4b71Sopenharmony_ci
159e41f4b71Sopenharmony_ci| 错误码ID    | 错误信息       |
160e41f4b71Sopenharmony_ci|----------| --------- |
161e41f4b71Sopenharmony_ci| 201      | Permission verification failed, usually the result returned by VerifyAccessToken.|
162e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
163e41f4b71Sopenharmony_ci| 801      | Capability not supported. |
164e41f4b71Sopenharmony_ci| 13900001 | Operation not permitted.            |
165e41f4b71Sopenharmony_ci| 13900042 | Unknown error                          |
166e41f4b71Sopenharmony_ci
167e41f4b71Sopenharmony_ci**示例:**
168e41f4b71Sopenharmony_ci
169e41f4b71Sopenharmony_ci  ```ts
170e41f4b71Sopenharmony_ci  import { BusinessError } from '@ohos.base';
171e41f4b71Sopenharmony_ci  import picker from '@ohos.file.picker';
172e41f4b71Sopenharmony_ci  
173e41f4b71Sopenharmony_ci  async function revokePermissionExample() {
174e41f4b71Sopenharmony_ci    try {
175e41f4b71Sopenharmony_ci      let DocumentSelectOptions = new picker.DocumentSelectOptions();
176e41f4b71Sopenharmony_ci      let documentPicker = new picker.DocumentViewPicker();
177e41f4b71Sopenharmony_ci      let uris = await documentPicker.select(DocumentSelectOptions);
178e41f4b71Sopenharmony_ci      let policyInfo: fileShare.PolicyInfo = {
179e41f4b71Sopenharmony_ci        uri: uris[0], 
180e41f4b71Sopenharmony_ci        operationMode: fileShare.OperationMode.READ_MODE,
181e41f4b71Sopenharmony_ci      };
182e41f4b71Sopenharmony_ci      let policies: Array<fileShare.PolicyInfo> = [policyInfo];
183e41f4b71Sopenharmony_ci      fileShare.revokePermission(policies).then(() => {
184e41f4b71Sopenharmony_ci        console.info("revokePermission successfully");
185e41f4b71Sopenharmony_ci      }).catch((err: BusinessError<Array<fileShare.PolicyErrorResult>>) => {
186e41f4b71Sopenharmony_ci        console.error("revokePermission failed with error message: " + err.message + ", error code: " + err.code);
187e41f4b71Sopenharmony_ci          if (err.code == 13900001 && err.data) {
188e41f4b71Sopenharmony_ci            for (let i = 0; i < err.data.length; i++) {
189e41f4b71Sopenharmony_ci              console.error("error code : " + JSON.stringify(err.data[i].code));
190e41f4b71Sopenharmony_ci              console.error("error uri : " + JSON.stringify(err.data[i].uri));
191e41f4b71Sopenharmony_ci              console.error("error reason : " + JSON.stringify(err.data[i].message));
192e41f4b71Sopenharmony_ci            }
193e41f4b71Sopenharmony_ci          }
194e41f4b71Sopenharmony_ci      });
195e41f4b71Sopenharmony_ci    } catch (error) {
196e41f4b71Sopenharmony_ci      let err: BusinessError = error as BusinessError;
197e41f4b71Sopenharmony_ci      console.error('revokePermission failed with err: ' + JSON.stringify(err));
198e41f4b71Sopenharmony_ci    }
199e41f4b71Sopenharmony_ci  }
200e41f4b71Sopenharmony_ci  ```
201e41f4b71Sopenharmony_ci
202e41f4b71Sopenharmony_ci## fileShare.activatePermission<sup>11+</sup>
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ciactivatePermission(policies: Array&lt;PolicyInfo>): Promise&lt;void&gt;
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci异步方法使能多个已经永久授权过的文件或目录,以promise形式返回结果,该接口仅对具有该系统能力的设备开放。
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.FILE_ACCESS_PERSIST
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.FileManagement.AppFileService.FolderAuthorization
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci**参数:**
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明                      |
215e41f4b71Sopenharmony_ci| -------- | -------- | -------- |-------------------------|
216e41f4b71Sopenharmony_ci| policies| Array&lt;[PolicyInfo](#policyinfo11)> | 是 | 需要授权URI的策略信息,policies数组大小上限为500。|
217e41f4b71Sopenharmony_ci
218e41f4b71Sopenharmony_ci**返回值:**
219e41f4b71Sopenharmony_ci
220e41f4b71Sopenharmony_ci| 类型 | 说明 |
221e41f4b71Sopenharmony_ci| -------- | -------- |
222e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
223e41f4b71Sopenharmony_ci
224e41f4b71Sopenharmony_ci**错误码:**
225e41f4b71Sopenharmony_ci
226e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
227e41f4b71Sopenharmony_ci如果存在URI使能权限失败,则抛出13900001错误码,且失败URI信息将抛出异常data属性中以Array<[PolicyErrorResult](#policyerrorresult11)>形式提供错误信息。
228e41f4b71Sopenharmony_ci
229e41f4b71Sopenharmony_ci| 错误码ID    | 错误信息       |
230e41f4b71Sopenharmony_ci|----------| --------- |
231e41f4b71Sopenharmony_ci| 201      | Permission verification failed, usually the result returned by VerifyAccessToken.|
232e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
233e41f4b71Sopenharmony_ci| 801      | Capability not supported. |
234e41f4b71Sopenharmony_ci| 13900001 | Operation not permitted.            |
235e41f4b71Sopenharmony_ci| 13900042 | Unknown error                          |
236e41f4b71Sopenharmony_ci
237e41f4b71Sopenharmony_ci**示例:**
238e41f4b71Sopenharmony_ci
239e41f4b71Sopenharmony_ci  ```ts
240e41f4b71Sopenharmony_ci  import { BusinessError } from '@ohos.base';
241e41f4b71Sopenharmony_ci  import picker from '@ohos.file.picker';
242e41f4b71Sopenharmony_ci  
243e41f4b71Sopenharmony_ci  async function activatePermissionExample() {
244e41f4b71Sopenharmony_ci    try {
245e41f4b71Sopenharmony_ci      let uri = "file://docs/storage/Users/username/tmp.txt";
246e41f4b71Sopenharmony_ci      let policyInfo: fileShare.PolicyInfo = {
247e41f4b71Sopenharmony_ci        uri: uri,
248e41f4b71Sopenharmony_ci        operationMode: fileShare.OperationMode.READ_MODE,
249e41f4b71Sopenharmony_ci      };
250e41f4b71Sopenharmony_ci      let policies: Array<fileShare.PolicyInfo> = [policyInfo];
251e41f4b71Sopenharmony_ci      fileShare.activatePermission(policies).then(() => {
252e41f4b71Sopenharmony_ci        console.info("activatePermission successfully");
253e41f4b71Sopenharmony_ci      }).catch(async (err: BusinessError<Array<fileShare.PolicyErrorResult>>) => {
254e41f4b71Sopenharmony_ci        console.error("activatePermission failed with error message: " + err.message + ", error code: " + err.code);
255e41f4b71Sopenharmony_ci          if (err.code == 13900001 && err.data) {
256e41f4b71Sopenharmony_ci            for (let i = 0; i < err.data.length; i++) {
257e41f4b71Sopenharmony_ci              console.error("error code : " + JSON.stringify(err.data[i].code));
258e41f4b71Sopenharmony_ci              console.error("error uri : " + JSON.stringify(err.data[i].uri));
259e41f4b71Sopenharmony_ci              console.error("error reason : " + JSON.stringify(err.data[i].message));
260e41f4b71Sopenharmony_ci              if(err.data[i].code == fileShare.PolicyErrorCode.PERMISSION_NOT_PERSISTED){
261e41f4b71Sopenharmony_ci                await fileShare.persistPermission(policies);
262e41f4b71Sopenharmony_ci              }
263e41f4b71Sopenharmony_ci            }
264e41f4b71Sopenharmony_ci          }
265e41f4b71Sopenharmony_ci      });
266e41f4b71Sopenharmony_ci    } catch (error) {
267e41f4b71Sopenharmony_ci      let err: BusinessError = error as BusinessError;
268e41f4b71Sopenharmony_ci      console.error('activatePermission failed with err: ' + JSON.stringify(err));
269e41f4b71Sopenharmony_ci    }
270e41f4b71Sopenharmony_ci  }
271e41f4b71Sopenharmony_ci  ```
272e41f4b71Sopenharmony_ci
273e41f4b71Sopenharmony_ci## fileShare.deactivatePermission<sup>11+</sup>
274e41f4b71Sopenharmony_ci
275e41f4b71Sopenharmony_cideactivatePermission(policies: Array&lt;PolicyInfo>): Promise&lt;void&gt;
276e41f4b71Sopenharmony_ci
277e41f4b71Sopenharmony_ci异步方法取消使能授权过的多个文件或目录,以promise形式返回结果,该接口仅对具有该系统能力的设备开放。
278e41f4b71Sopenharmony_ci
279e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.FILE_ACCESS_PERSIST
280e41f4b71Sopenharmony_ci
281e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.FileManagement.AppFileService.FolderAuthorization
282e41f4b71Sopenharmony_ci
283e41f4b71Sopenharmony_ci**参数:**
284e41f4b71Sopenharmony_ci
285e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明                      |
286e41f4b71Sopenharmony_ci| -------- | -------- | -------- |-------------------------|
287e41f4b71Sopenharmony_ci| policies| Array&lt;[PolicyInfo](#policyinfo11)> | 是 | 需要授权URI的策略信息,policies数组大小上限为500。|
288e41f4b71Sopenharmony_ci
289e41f4b71Sopenharmony_ci**返回值:**
290e41f4b71Sopenharmony_ci
291e41f4b71Sopenharmony_ci| 类型 | 说明 |
292e41f4b71Sopenharmony_ci| -------- | -------- |
293e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
294e41f4b71Sopenharmony_ci
295e41f4b71Sopenharmony_ci**错误码:**
296e41f4b71Sopenharmony_ci
297e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
298e41f4b71Sopenharmony_ci如果存在URI取消使能权限失败,则抛出13900001错误码,且失败URI信息将抛出异常data属性中以Array<[PolicyErrorResult](#policyerrorresult11)>形式提供错误信息。
299e41f4b71Sopenharmony_ci
300e41f4b71Sopenharmony_ci| 错误码ID    | 错误信息       |
301e41f4b71Sopenharmony_ci|----------| --------- |
302e41f4b71Sopenharmony_ci| 201      | Permission verification failed, usually the result returned by VerifyAccessToken.|
303e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
304e41f4b71Sopenharmony_ci| 801      | Capability not supported. |
305e41f4b71Sopenharmony_ci| 13900001 | Operation not permitted.            |
306e41f4b71Sopenharmony_ci| 13900042 | Unknown error                          |
307e41f4b71Sopenharmony_ci
308e41f4b71Sopenharmony_ci**示例:**
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_ci  ```ts
311e41f4b71Sopenharmony_ci  import { BusinessError } from '@ohos.base';
312e41f4b71Sopenharmony_ci  import picker from '@ohos.file.picker';
313e41f4b71Sopenharmony_ci  
314e41f4b71Sopenharmony_ci  async function deactivatePermissionExample() {
315e41f4b71Sopenharmony_ci    try {
316e41f4b71Sopenharmony_ci      let uri = "file://docs/storage/Users/username/tmp.txt";
317e41f4b71Sopenharmony_ci      let policyInfo: fileShare.PolicyInfo = {
318e41f4b71Sopenharmony_ci        uri: uri,
319e41f4b71Sopenharmony_ci        operationMode: fileShare.OperationMode.READ_MODE,
320e41f4b71Sopenharmony_ci      };
321e41f4b71Sopenharmony_ci      let policies: Array<fileShare.PolicyInfo> = [policyInfo];
322e41f4b71Sopenharmony_ci      fileShare.deactivatePermission(policies).then(() => {
323e41f4b71Sopenharmony_ci        console.info("deactivatePermission successfully");
324e41f4b71Sopenharmony_ci      }).catch((err: BusinessError<Array<fileShare.PolicyErrorResult>>) => {
325e41f4b71Sopenharmony_ci        console.error("deactivatePermission failed with error message: " + err.message + ", error code: " + err.code);
326e41f4b71Sopenharmony_ci          if (err.code == 13900001 && err.data) {
327e41f4b71Sopenharmony_ci            for (let i = 0; i < err.data.length; i++) {
328e41f4b71Sopenharmony_ci              console.error("error code : " + JSON.stringify(err.data[i].code));
329e41f4b71Sopenharmony_ci              console.error("error uri : " + JSON.stringify(err.data[i].uri));
330e41f4b71Sopenharmony_ci              console.error("error reason : " + JSON.stringify(err.data[i].message));
331e41f4b71Sopenharmony_ci            }
332e41f4b71Sopenharmony_ci          }
333e41f4b71Sopenharmony_ci      });
334e41f4b71Sopenharmony_ci    } catch (error) {
335e41f4b71Sopenharmony_ci      let err: BusinessError = error as BusinessError;
336e41f4b71Sopenharmony_ci      console.error('deactivatePermission failed with err: ' + JSON.stringify(err));
337e41f4b71Sopenharmony_ci    }
338e41f4b71Sopenharmony_ci  }
339e41f4b71Sopenharmony_ci  ```
340e41f4b71Sopenharmony_ci
341e41f4b71Sopenharmony_ci## fileShare.checkPersistentPermission<sup>12+</sup>
342e41f4b71Sopenharmony_ci
343e41f4b71Sopenharmony_cicheckPersistentPermission(policies: Array&lt;PolicyInfo>): Promise&lt;Array&lt;boolean&gt;&gt;
344e41f4b71Sopenharmony_ci
345e41f4b71Sopenharmony_ci异步方法校验所选择的多个文件或目录URI持久化授权,以promise形式返回结果。
346e41f4b71Sopenharmony_ci
347e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.FILE_ACCESS_PERSIST
348e41f4b71Sopenharmony_ci
349e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.FileManagement.AppFileService.FolderAuthorization
350e41f4b71Sopenharmony_ci
351e41f4b71Sopenharmony_ci**参数:**
352e41f4b71Sopenharmony_ci
353e41f4b71Sopenharmony_ci| 参数名 | 类型                                    | 必填 | 说明                      |
354e41f4b71Sopenharmony_ci| -------- |---------------------------------------| -------- |-------------------------|
355e41f4b71Sopenharmony_ci| policies| Array&lt;[PolicyInfo](#policyinfo11)> | 是 | 需要授权URI的策略信息,policies数组大小上限为500。|
356e41f4b71Sopenharmony_ci
357e41f4b71Sopenharmony_ci**返回值:**
358e41f4b71Sopenharmony_ci
359e41f4b71Sopenharmony_ci|              类型                   |               说明                    |
360e41f4b71Sopenharmony_ci| ----------------------------------- | ------------------------------------- |
361e41f4b71Sopenharmony_ci| Promise&lt;Array&lt;boolean&gt;&gt; | Promise对象,返回true表示有持久化授权,false表示不具有持久化授权。 |
362e41f4b71Sopenharmony_ci
363e41f4b71Sopenharmony_ci**错误码:**
364e41f4b71Sopenharmony_ci
365e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
366e41f4b71Sopenharmony_ci
367e41f4b71Sopenharmony_ci| 错误码ID    | 错误信息       |
368e41f4b71Sopenharmony_ci|----------| --------- |
369e41f4b71Sopenharmony_ci| 201      | Permission verification failed, usually the result returned by VerifyAccessToken.|
370e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
371e41f4b71Sopenharmony_ci| 801      | Capability not supported. |
372e41f4b71Sopenharmony_ci| 13900042 | Unknown error                          |
373e41f4b71Sopenharmony_ci
374e41f4b71Sopenharmony_ci**示例:**
375e41f4b71Sopenharmony_ci
376e41f4b71Sopenharmony_ci  ```ts
377e41f4b71Sopenharmony_ci  import { BusinessError } from '@ohos.base';
378e41f4b71Sopenharmony_ci  import picker from '@ohos.file.picker';
379e41f4b71Sopenharmony_ci  
380e41f4b71Sopenharmony_ci  async function checkPersistentPermissionExample() {
381e41f4b71Sopenharmony_ci    try {
382e41f4b71Sopenharmony_ci      let documentSelectOptions = new picker.DocumentSelectOptions();
383e41f4b71Sopenharmony_ci      let documentPicker = new picker.DocumentViewPicker();
384e41f4b71Sopenharmony_ci      let uris = await documentPicker.select(documentSelectOptions);
385e41f4b71Sopenharmony_ci      let policyInfo: fileShare.PolicyInfo = {
386e41f4b71Sopenharmony_ci        uri: uris[0], 
387e41f4b71Sopenharmony_ci        operationMode: fileShare.OperationMode.READ_MODE,
388e41f4b71Sopenharmony_ci      };
389e41f4b71Sopenharmony_ci      let policies: Array<fileShare.PolicyInfo> = [policyInfo];
390e41f4b71Sopenharmony_ci      fileShare.checkPersistentPermission(policies).then(async (data) => {
391e41f4b71Sopenharmony_ci        let result: Array<boolean> = data;
392e41f4b71Sopenharmony_ci        for (let i = 0; i < result.length; i++) {
393e41f4b71Sopenharmony_ci          console.log("checkPersistentPermission result: " + JSON.stringify(result[i]));
394e41f4b71Sopenharmony_ci          if(!result[i]){
395e41f4b71Sopenharmony_ci            let info: fileShare.PolicyInfo = {
396e41f4b71Sopenharmony_ci              uri: policies[i].uri, 
397e41f4b71Sopenharmony_ci              operationMode: policies[i].operationMode,
398e41f4b71Sopenharmony_ci            };
399e41f4b71Sopenharmony_ci            let policy : Array<fileShare.PolicyInfo> = [info];
400e41f4b71Sopenharmony_ci            await fileShare.persistPermission(policy);
401e41f4b71Sopenharmony_ci          }
402e41f4b71Sopenharmony_ci        }
403e41f4b71Sopenharmony_ci      }).catch((err: BusinessError<Array<fileShare.PolicyErrorResult>>) => {
404e41f4b71Sopenharmony_ci        console.error("checkPersistentPermission failed with error message: " + err.message + ", error code: " + err.code);
405e41f4b71Sopenharmony_ci      });
406e41f4b71Sopenharmony_ci    } catch (error) {
407e41f4b71Sopenharmony_ci      let err: BusinessError = error as BusinessError;
408e41f4b71Sopenharmony_ci      console.error('checkPersistentPermission failed with err: ' + JSON.stringify(err));
409e41f4b71Sopenharmony_ci    }
410e41f4b71Sopenharmony_ci  }
411e41f4b71Sopenharmony_ci  ```
412