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<PolicyInfo>): Promise<void> 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<[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<void> | 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<PolicyInfo>): Promise<void> 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<[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<void> | 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<PolicyInfo>): Promise<void> 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<[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<void> | 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<PolicyInfo>): Promise<void> 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<[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<void> | 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<PolicyInfo>): Promise<Array<boolean>> 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<[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<Array<boolean>> | 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