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<PolicyInfo>): Promise<void> 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<[PolicyInfo](#policyinfo11)> | 是 | 需要授权URI的策略信息,policies数组大小上限为500。| 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_ci**返回值:** 79e41f4b71Sopenharmony_ci 80e41f4b71Sopenharmony_ci| 类型 | 说明 | 81e41f4b71Sopenharmony_ci| -------- | -------- | 82e41f4b71Sopenharmony_ci| Promise<void> | 无返回结果的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<PolicyInfo>): Promise<void> 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<[PolicyInfo](#policyinfo11)> | 是 | 需要授权URI的策略信息,policies数组大小上限为500。| 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ci**返回值:** 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci| 类型 | 说明 | 151e41f4b71Sopenharmony_ci| -------- | -------- | 152e41f4b71Sopenharmony_ci| Promise<void> | 无返回结果的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<PolicyInfo>): Promise<void> 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<[PolicyInfo](#policyinfo11)> | 是 | 需要授权URI的策略信息,policies数组大小上限为500。| 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci**返回值:** 219e41f4b71Sopenharmony_ci 220e41f4b71Sopenharmony_ci| 类型 | 说明 | 221e41f4b71Sopenharmony_ci| -------- | -------- | 222e41f4b71Sopenharmony_ci| Promise<void> | 无返回结果的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<PolicyInfo>): Promise<void> 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<[PolicyInfo](#policyinfo11)> | 是 | 需要授权URI的策略信息,policies数组大小上限为500。| 288e41f4b71Sopenharmony_ci 289e41f4b71Sopenharmony_ci**返回值:** 290e41f4b71Sopenharmony_ci 291e41f4b71Sopenharmony_ci| 类型 | 说明 | 292e41f4b71Sopenharmony_ci| -------- | -------- | 293e41f4b71Sopenharmony_ci| Promise<void> | 无返回结果的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<PolicyInfo>): Promise<Array<boolean>> 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<[PolicyInfo](#policyinfo11)> | 是 | 需要授权URI的策略信息,policies数组大小上限为500。| 356e41f4b71Sopenharmony_ci 357e41f4b71Sopenharmony_ci**返回值:** 358e41f4b71Sopenharmony_ci 359e41f4b71Sopenharmony_ci| 类型 | 说明 | 360e41f4b71Sopenharmony_ci| ----------------------------------- | ------------------------------------- | 361e41f4b71Sopenharmony_ci| Promise<Array<boolean>> | 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