1e41f4b71Sopenharmony_ci# @ohos.fileshare (File Sharing)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ciThe **fileShare** module provides APIs for granting permissions on a user file to another application based on the file Uniform Resource Identifier (URI). Then, the authorized application can call [@ohos.file.fs](js-apis-file-fs.md) APIs to access the file.
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci> **NOTE**
6e41f4b71Sopenharmony_ci>
7e41f4b71Sopenharmony_ci> The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version.
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci## Modules to Import
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci```ts
12e41f4b71Sopenharmony_ciimport fileShare from '@ohos.fileshare';
13e41f4b71Sopenharmony_ci```
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci## OperationMode<sup>11+</sup>
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ciEnumerates the permissions on a URI.
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.AppFileService.FolderAuthorization
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci| Name | Value  | Description |
22e41f4b71Sopenharmony_ci| ----- |-----|-----|
23e41f4b71Sopenharmony_ci| READ_MODE  | 0b1 | Read.|
24e41f4b71Sopenharmony_ci| WRITE_MODE  | 0b10 | Write.|
25e41f4b71Sopenharmony_ci
26e41f4b71Sopenharmony_ci## PolicyErrorCode<sup>11+</sup>
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_ciEnumerates the error codes for a permission policy.
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.AppFileService.FolderAuthorization
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci| Name | Value  | Description       |
33e41f4b71Sopenharmony_ci| ----- |-----|-----------|
34e41f4b71Sopenharmony_ci| PERSISTENCE_FORBIDDEN  | 1   | The permission on the URI cannot be persisted.|
35e41f4b71Sopenharmony_ci| INVALID_MODE  | 2   | Invalid mode.    |
36e41f4b71Sopenharmony_ci| INVALID_PATH  | 3   | Invalid path.    |
37e41f4b71Sopenharmony_ci| PERMISSION_NOT_PERSISTED<sup>12+</sup>  | 4   | The permission is not persisted.|
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci## PolicyErrorResult<sup>11+</sup>
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ciRepresents the detailed permission policy error information, which can be used when **persistPermission**, **revokePermission**, **activatePermission**, or **deactivatePermission** throws an error.
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.AppFileService.FolderAuthorization
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci| Name     | Type                                  | Mandatory| Description               |
46e41f4b71Sopenharmony_ci|---------|--------------------------------------|-----|-----------------------|
47e41f4b71Sopenharmony_ci| uri     | string                               | Yes | URI of the file, on which the permission fails to be granted or activated.        |
48e41f4b71Sopenharmony_ci| code    | [PolicyErrorCode](#policyerrorcode11) | Yes | Error code.|
49e41f4b71Sopenharmony_ci| message | string                               | Yes  | Cause of the error. |
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ci## PolicyInfo<sup>11+</sup>
52e41f4b71Sopenharmony_ci
53e41f4b71Sopenharmony_ciRepresents a permission policy, that is, a policy for granting or activating the permission on a file.
54e41f4b71Sopenharmony_ci
55e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.AppFileService.FolderAuthorization
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ci| Name           | Type      | Mandatory | Description                                                                                                                                               |
58e41f4b71Sopenharmony_ci|---------------| ---------|-----|---------------------------------------------------------------------------------------------------------------------------------------------------|
59e41f4b71Sopenharmony_ci| uri           | string     | Yes  | URI of the file, on which the permission is to be granted or activated.                                                                                                                                   |
60e41f4b71Sopenharmony_ci| operationMode | number  | Yes  | Permissions on the URI. For details, see [OperationMode](#operationmode11).<br>For example, **fileShare.OperationMode.READ_MODE** indicates the read permission on the file.<br>**fileShare.OperationMode.READ_MODE\|fileShare.OperationMode.WRITE_MODE** indicates the read/write permission.|
61e41f4b71Sopenharmony_ci
62e41f4b71Sopenharmony_ci## fileShare.persistPermission<sup>11+</sup>
63e41f4b71Sopenharmony_ci
64e41f4b71Sopenharmony_cipersistPermission(policies: Array&lt;PolicyInfo>): Promise&lt;void&gt;
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ciPersists the permissions granted to multiple files or folders. This API uses a promise to return the result.<br>This API is available only to the devices with the required system capability.
67e41f4b71Sopenharmony_ci
68e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.FILE_ACCESS_PERSIST
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.AppFileService.FolderAuthorization
71e41f4b71Sopenharmony_ci
72e41f4b71Sopenharmony_ci**Parameters**
73e41f4b71Sopenharmony_ci
74e41f4b71Sopenharmony_ci| Name| Type                                   | Mandatory| Description                     |
75e41f4b71Sopenharmony_ci| -------- |---------------------------------------| -------- |-------------------------|
76e41f4b71Sopenharmony_ci| policies| Array&lt;[PolicyInfo](#policyinfo11)> | Yes| Array of permission policies. The maximum number of policies is 500.|
77e41f4b71Sopenharmony_ci
78e41f4b71Sopenharmony_ci**Return value**
79e41f4b71Sopenharmony_ci
80e41f4b71Sopenharmony_ci| Type| Description|
81e41f4b71Sopenharmony_ci| -------- | -------- |
82e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | Promise that returns no value.|
83e41f4b71Sopenharmony_ci
84e41f4b71Sopenharmony_ci**Error codes**
85e41f4b71Sopenharmony_ci
86e41f4b71Sopenharmony_ciFor details about the error codes, see [File Management Error Codes](errorcode-filemanagement.md).
87e41f4b71Sopenharmony_ciIf the permission persistence of some URIs fails, error code 13900001 will be returned and the **data** field provides error information of these URIs in the Array<[PolicyErrorResult](#policyerrorresult11)> format.
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci| ID   | Error Message      |
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**Example**
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_ciRevokes permissions from multiple files or folders. This API uses a promise to return the result.<br>This API is available only to the devices with the required system capability.
137e41f4b71Sopenharmony_ci
138e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.FILE_ACCESS_PERSIST
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.AppFileService.FolderAuthorization
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci**Parameters**
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ci| Name| Type                | Mandatory| Description                     |
145e41f4b71Sopenharmony_ci| -------- |--------------------| -------- |-------------------------|
146e41f4b71Sopenharmony_ci| policies| Array&lt;[PolicyInfo](#policyinfo11)> | Yes| Array of permission policies. The maximum number of policies is 500.|
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ci**Return value**
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci| Type| Description|
151e41f4b71Sopenharmony_ci| -------- | -------- |
152e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | Promise that returns no value.|
153e41f4b71Sopenharmony_ci
154e41f4b71Sopenharmony_ci**Error codes**
155e41f4b71Sopenharmony_ci
156e41f4b71Sopenharmony_ciFor details about the error codes, see [File Management Error Codes](errorcode-filemanagement.md).
157e41f4b71Sopenharmony_ciIf the permission revocation of some URIs fails, error code 13900001 will be returned and the **data** field provides error information of these URIs in the Array<[PolicyErrorResult](#policyerrorresult11)> format.
158e41f4b71Sopenharmony_ci
159e41f4b71Sopenharmony_ci| ID   | Error Message      |
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**Example**
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_ciActivates the permissions that have been persisted on multiple files or folders. This API uses a promise to return the result.<br>This API is available only to the devices with the required system capability.
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.FILE_ACCESS_PERSIST
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.AppFileService.FolderAuthorization
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci**Parameters**
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description                     |
215e41f4b71Sopenharmony_ci| -------- | -------- | -------- |-------------------------|
216e41f4b71Sopenharmony_ci| policies| Array&lt;[PolicyInfo](#policyinfo11)> | Yes| Array of permission policies. The maximum number of policies is 500.|
217e41f4b71Sopenharmony_ci
218e41f4b71Sopenharmony_ci**Return value**
219e41f4b71Sopenharmony_ci
220e41f4b71Sopenharmony_ci| Type| Description|
221e41f4b71Sopenharmony_ci| -------- | -------- |
222e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | Promise that returns no value.|
223e41f4b71Sopenharmony_ci
224e41f4b71Sopenharmony_ci**Error codes**
225e41f4b71Sopenharmony_ci
226e41f4b71Sopenharmony_ciFor details about the error codes, see [File Management Error Codes](errorcode-filemanagement.md).
227e41f4b71Sopenharmony_ciIf the permission activation of some URIs fails, error code 13900001 will be returned and the **data** field provides error information of these URIs in the Array<[PolicyErrorResult](#policyerrorresult11)> format.
228e41f4b71Sopenharmony_ci
229e41f4b71Sopenharmony_ci| ID   | Error Message      |
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**Example**
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_ciDeactivates the permissions on multiple files or folders. This API uses a promise to return the result. <br>This API is available only to the devices that have the required system capability.
278e41f4b71Sopenharmony_ci
279e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.FILE_ACCESS_PERSIST
280e41f4b71Sopenharmony_ci
281e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.AppFileService.FolderAuthorization
282e41f4b71Sopenharmony_ci
283e41f4b71Sopenharmony_ci**Parameters**
284e41f4b71Sopenharmony_ci
285e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description                     |
286e41f4b71Sopenharmony_ci| -------- | -------- | -------- |-------------------------|
287e41f4b71Sopenharmony_ci| policies| Array&lt;[PolicyInfo](#policyinfo11)> | Yes| Array of permission policies. The maximum number of policies is 500.|
288e41f4b71Sopenharmony_ci
289e41f4b71Sopenharmony_ci**Return value**
290e41f4b71Sopenharmony_ci
291e41f4b71Sopenharmony_ci| Type| Description|
292e41f4b71Sopenharmony_ci| -------- | -------- |
293e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | Promise that returns no value.|
294e41f4b71Sopenharmony_ci
295e41f4b71Sopenharmony_ci**Error codes**
296e41f4b71Sopenharmony_ci
297e41f4b71Sopenharmony_ciFor details about the error codes, see [File Management Error Codes](errorcode-filemanagement.md).
298e41f4b71Sopenharmony_ciIf the permission deactivation of some URIs fails, error code 13900001 will be returned and the **data** field provides error information of these URIs in the Array<[PolicyErrorResult](#policyerrorresult11)> format.
299e41f4b71Sopenharmony_ci
300e41f4b71Sopenharmony_ci| ID   | Error Message      |
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**Example**
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_ciChecks persistent permissions. This API uses a promise to return the result.
346e41f4b71Sopenharmony_ci
347e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.FILE_ACCESS_PERSIST
348e41f4b71Sopenharmony_ci
349e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.AppFileService.FolderAuthorization
350e41f4b71Sopenharmony_ci
351e41f4b71Sopenharmony_ci**Parameters**
352e41f4b71Sopenharmony_ci
353e41f4b71Sopenharmony_ci| Name| Type                                   | Mandatory| Description                     |
354e41f4b71Sopenharmony_ci| -------- |---------------------------------------| -------- |-------------------------|
355e41f4b71Sopenharmony_ci| policies| Array&lt;[PolicyInfo](#policyinfo11)> | Yes| Array of permission policies. The maximum number of policies is 500.|
356e41f4b71Sopenharmony_ci
357e41f4b71Sopenharmony_ci**Return value**
358e41f4b71Sopenharmony_ci
359e41f4b71Sopenharmony_ci|              Type                  |               Description                   |
360e41f4b71Sopenharmony_ci| ----------------------------------- | ------------------------------------- |
361e41f4b71Sopenharmony_ci| Promise&lt;Array&lt;boolean&gt;&gt; | Promise used to return the result. The value **true** means the permission on the file or folder is persistent; the value **false** means the opposite.|
362e41f4b71Sopenharmony_ci
363e41f4b71Sopenharmony_ci**Error codes**
364e41f4b71Sopenharmony_ci
365e41f4b71Sopenharmony_ciFor details about the error codes, see [File Management Error Codes](errorcode-filemanagement.md).
366e41f4b71Sopenharmony_ci
367e41f4b71Sopenharmony_ci| ID   | Error Message      |
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**Example**
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