# @ohos.fileshare (File Sharing) (System API) The **fileShare** module provides APIs for granting the access permissions on a user file to another application based on the file Uniform Resource Identifier (URI). Then, the authorized application can access the file by using the [@ohos.file.fs](js-apis-file-fs.md) APIs. > **NOTE** > > - 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. > - This topic describes only the system APIs provided by the module. For details about its public APIs, see [@ohos.fileshare](js-apis-fileShare-sys.md). ## Modules to Import ```ts import { fileShare } from '@kit.CoreFileKit'; ``` ## fileShare.grantUriPermission grantUriPermission(uri: string, bundleName: string, flag: wantConstant.Flags, callback: AsyncCallback<void>): void Grants the permissions on a user file to an application. This API uses an asynchronous callback to return the result. **Required permissions**: ohos.permission.WRITE_MEDIA **System API**: This is a system API. **System capability**: SystemCapability.FileManagement.AppFileService **Parameters** | Name| Type| Mandatory| Description| | ------ |---------| ---- |-----------| | uri | string| Yes | URI of the file under user directory.| | bundleName | string| Yes | Application to be granted with the permissions. | | flag | [wantConstant.Flags](../apis-ability-kit/js-apis-app-ability-wantConstant.md#flags) | Yes | Permissions to grant. | | callback | AsyncCallback<void>| Yes | Callback used to return the result.| **Error codes** For details about the error codes, see [File Management Error Codes](errorcode-filemanagement.md). | ID| Error Message| | ------ | ------- | | 201 | Permission verification failed. | | 202 | The caller is not a system application. | | 401 | The input parameter is invalid. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | | 143000001 | IPC error. | **Example** ```ts import { wantConstant } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let uri: string = 'file://docs/storage/Users/currentUser/Document/1.txt'; // You are advised to use the system API to generate a URI using fileUri.getUriFromPath("Sandbox path"); let bundleName: string = 'com.demo.test'; try { fileShare.grantUriPermission(uri, bundleName, wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION, (err: BusinessError) => { if (err) { console.error("grantUriPermission failed with error: " + JSON.stringify(err)); return; } console.info("grantUriPermission success!"); }); } catch (err) { let error: BusinessError = err as BusinessError; console.error("grantUriPermission failed with error:" + JSON.stringify(error)); } ``` ## fileShare.grantUriPermission grantUriPermission(uri: string, bundleName: string, flag: wantConstant.Flags): Promise<void> Grants the permissions on a user file to an application. This API uses a promise to return the result. **Required permissions**: ohos.permission.WRITE_MEDIA **System API**: This is a system API. **System capability**: SystemCapability.FileManagement.AppFileService **Parameters** | Name| Type| Mandatory| Description | | ------ |-------| ---- |-----------| | uri | string| Yes | URI of the file under user directory.| | bundleName | string| Yes | Application to be granted with the permissions. | | flag | [wantConstant.Flags](../apis-ability-kit/js-apis-app-ability-wantConstant.md#flags) | Yes | Permissions to grant. | **Return value** | Type | Description | | ---------- | ---------- | | Promise<void> | Promise that returns no value.| **Error codes** For details about the error codes, see [File Management Error Codes](errorcode-filemanagement.md). | ID| Error Message| | ------- | ---------- | | 201 | Permission verification failed. | | 202 | The caller is not a system application. | | 401 | The input parameter is invalid. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | | 143000001 | IPC error. | **Example** ```ts import { wantConstant } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let uri: string = 'file://docs/storage/Users/currentUser/Document/1.txt'; // You are advised to use the system API fileUri.getUriFromPath("Sandbox path") to generate a URI.; let bundleName: string = 'com.demo.test'; try { fileShare.grantUriPermission(uri, bundleName, wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION).then(() => { console.info("grantUriPermission success!"); }).catch((error: BusinessError) => { console.error("grantUriPermission failed with error:" + JSON.stringify(error)); }); } catch (err) { let error: BusinessError = err as BusinessError; console.error("grantUriPermission failed with error:" + JSON.stringify(error)); } ``` ## fileShare.checkPathPermission15+ checkPathPermission(tokenID: number, policies: Array<PathPolicyInfo>, policyType: PolicyType): Promise<Array<boolean>> Checks whether the selected files or folders have temporary or persistent permissions. This API uses a promise to return the result. **Required permission**: ohos.permission.CHECK_SANDBOX_POLICY **System API**: This is a system API. **System capability**: SystemCapability.FileManagement.AppFileService.FolderAuthorization **Parameters** | Name| Type| Mandatory| Description| | -------- |-------| -------- |----------| | tokenID| number | Yes| Application token ID, which is the value of **accessTokenId** in [ApplicationInfo](../apis-ability-kit/js-apis-bundleManager-applicationInfo.md).| | policies| Array<[PathPolicyInfo](js-apis-fileShare.md#pathpolicyinfo15)> | Yes| Array of permission policies. The maximum number of policies is 500.| | policyType| [PolicyType](js-apis-fileShare.md#policytype15) | Yes| Policy type to check, which can be a temporary or persistent permission.| **Return value** |Type|Description| | ------ | ------ | | Promise<Array<boolean>> | Promise used to return the result. The value **true** means that a policy type is used. Otherwise, **false** is returned.| **Error codes** For details about the error codes, see [File Management Error Codes](errorcode-filemanagement.md). | ID | Error Message | |----------| --------- | | 201 | Permission verification failed, usually the result returned by VerifyAccessToken.| | 202 | The caller is not a system application.| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | | 801 | Capability not supported. | **Example** ```ts import { BusinessError } from '@ohos.base'; import fileshare from '@ohos.fileshare'; async function checkPersistentPermissionExample() { try { let pathPolicyInfo1: fileshare.PathPolicyInfo = { path: "/storage/Users/currentUser/Documents/1.txt", operationMode: fileshare.OperationMode.READ_MODE, } let pathPolicyInfo2: fileshare.PathPolicyInfo = { path: "/storage/Users/currentUser/Desktop/2.txt", operationMode: fileshare.OperationMode.READ_MODE, } let policies: Array = [pathPolicyInfo1, pathPolicyInfo2]; let policyType: fileshare.PolicyType = fileshare.PolicyType.PERSISTENT_TYPE; let tokenid = 537688848; // Use bundleManager.getApplicationInfo() to obtain the token ID for a system application, and use bundleManager.getBundleInfoForSelf() to obtain the token ID for a non-system application. fileshare.checkPathPermission(tokenid, policies, policyType).then((result:Array) => { for (let x of result) { console.info('check permission result is', x); } }) console.info("checkPathPermission finish"); } catch (error) { console.info(error.code + 'checkPathPermission error' + error.message); } } ```