1# @ohos.fileshare (File Sharing) (System API)
2
3The **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.
4
5> **NOTE**
6>
7> - 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.
8> - 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).
9
10## Modules to Import
11
12```ts
13import  { fileShare } from '@kit.CoreFileKit';
14```
15
16## fileShare.grantUriPermission
17
18grantUriPermission(uri: string, bundleName: string, flag: wantConstant.Flags, callback: AsyncCallback<void>): void
19
20Grants the permissions on a user file to an application. This API uses an asynchronous callback to return the result.
21
22**Required permissions**: ohos.permission.WRITE_MEDIA
23
24**System API**: This is a system API.
25
26**System capability**: SystemCapability.FileManagement.AppFileService
27
28**Parameters**
29
30| Name| Type  | Mandatory| Description                      |
31| ------ | ------ | ---- | -------------------------- |
32| uri   | string | Yes  | URI of the file.|
33| bundleName   | string | Yes  | Application to be grated with the permissions.|
34| flag   | [wantConstant.Flags](../apis-ability-kit/js-apis-app-ability-wantConstant.md#wantconstantflags) | Yes  | Permissions to grant.<br>**wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION**: permission to read the file. <br>**wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION**: permission to write the file.|
35 | callback | AsyncCallback&lt;void&gt;  | Yes   | Callback used to return the result.                            |
36
37**Error codes**
38
39For details about the error codes, see [File Management Error Codes](errorcode-filemanagement.md).
40
41| ID                    | Error Message       |
42| ---------------------------- | ---------- |
43| 201 | Permission verification failed |
44| 202 | The caller is not a system application |
45| 401 | The input parameter is invalid. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types |
46| 143000001 | IPC error |
47
48**Example**
49
50  ```ts
51  import { wantConstant } from '@kit.AbilityKit';
52  import { BusinessError } from '@kit.BasicServicesKit';
53  let uri: string = 'file://media/image/8';
54  let bundleName: string = 'com.demo.test';
55  try {
56    fileShare.grantUriPermission(uri, bundleName, wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION |
57      wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION, (err: BusinessError) => {
58      if (err) {
59        console.error("grantUriPermission failed with error: " + JSON.stringify(err));
60        return;
61      }
62      console.info("grantUriPermission success!");
63    });
64  } catch (err) {
65    let error: BusinessError = err as BusinessError;
66    console.error("grantUriPermission failed with error:" + JSON.stringify(error));
67  }
68  ```
69
70## fileShare.grantUriPermission
71
72grantUriPermission(uri: string, bundleName: string, flag: wantConstant.Flags): Promise&lt;void&gt;
73
74Grants the permissions on a user file to an application. This API uses a promise to return the result.
75
76**Required permissions**: ohos.permission.WRITE_MEDIA
77
78**System API**: This is a system API.
79
80**System capability**: SystemCapability.FileManagement.AppFileService
81
82**Parameters**
83
84| Name| Type  | Mandatory| Description                      |
85| ------ | ------ | ---- | -------------------------- |
86| uri   | string | Yes  | URI of the file.|
87| bundleName   | string | Yes  | Application to be grated with the permissions.|
88| flag   | [wantConstant.Flags](../apis-ability-kit/js-apis-app-ability-wantConstant.md#wantconstantflags) | Yes  | Permissions to grant.<br>**wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION**: permission to read the file. <br>**wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION**: permission to write the file.|
89
90**Return value**
91
92  | Type                          | Description        |
93  | ---------------------------- | ---------- |
94  | Promise&lt;void&gt; | Promise that returns no value.|
95
96**Error codes**
97
98For details about the error codes, see [File Management Error Codes](errorcode-filemanagement.md).
99
100| ID                    | Error Message       |
101| ---------------------------- | ---------- |
102| 201 | Permission verification failed |
103| 202 | The caller is not a system application |
104| 401 | The input parameter is invalid. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types |
105| 143000001 | IPC error |
106
107**Example**
108
109  ```ts
110  import { wantConstant } from '@kit.AbilityKit';
111  import { BusinessError } from '@kit.BasicServicesKit';
112  let uri: string = 'file://media/image/8';
113  let bundleName: string = 'com.demo.test';
114  try {
115    fileShare.grantUriPermission(uri, bundleName, wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION |
116      wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION).then(() => {
117      console.info("grantUriPermission success!");
118    }).catch((error: BusinessError) => {
119      console.error("grantUriPermission failed with error:" + JSON.stringify(error));
120    });
121  } catch (err) {
122    let error: BusinessError = err as BusinessError;
123    console.error("grantUriPermission failed with error:" + JSON.stringify(error));
124  }
125  ```
126
127
128deactivatePermission(policies: Array&lt;PolicyInfo>): Promise&lt;void&gt;
129
130Deactivates 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.
131
132**Required permissions**: ohos.permission.FILE_ACCESS_PERSIST
133
134**System capability**: SystemCapability.FileManagement.AppFileService.FolderAuthorization
135
136**Parameters**
137
138| Name| Type| Mandatory| Description                     |
139| -------- | -------- | -------- |-------------------------|
140| policies| Array&lt;[PolicyInfo](js-apis-fileShare.md#policyinfo11)> | Yes| Permissions to persist.          |
141
142**Return value**
143
144| Type| Description|
145| -------- | -------- |
146| Promise&lt;void&gt; | Promise that returns no value.|
147
148**Error codes**
149
150For details about the error codes, see [File Management Error Codes](errorcode-filemanagement.md).
151If 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](js-apis-fileShare.md#policyerrorresult11)> format.
152
153| ID   | Error Message      |
154|----------| --------- |
155| 201      | Permission verification failed, usually the result returned by VerifyAccessToken.|
156| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
157| 801      | Capability not supported. |
158| 13900001 | Operation not permitted.            |
159| 13900042 | Unknown error                          |
160
161**Example**
162
163  ```ts
164import { BusinessError } from '@kit.BasicServicesKit';
165import  { picker } from '@kit.CoreFileKit';
166
167  async function deactivatePermissionExample() {
168    try {
169      let uri = "file://docs/storage/Users/username/tmp.txt";
170      let policyInfo: fileShare.PolicyInfo = {
171        uri: uri,
172        operationMode: fileShare.OperationMode.READ_MODE,
173      };
174      let policies: Array<fileShare.PolicyInfo> = [policyInfo];
175      fileShare.deactivatePermission(policies).then(() => {
176        console.info("deactivatePermission successfully");
177      }).catch((err: BusinessError<Array<fileShare.PolicyErrorResult>>) => {
178        console.info("deactivatePermission failed with error message: " + err.message + ", error code: " + err.code);
179          if (err.code == 13900001 && err.data) {
180            for (let i = 0; i < err.data.length; i++) {
181              console.log("error code : " + JSON.stringify(err.data[i].code));
182              console.log("error uri : " + JSON.stringify(err.data[i].uri));
183              console.log("error reason : " + JSON.stringify(err.data[i].message));
184            }
185          }
186      });
187    } catch (error) {
188      let err: BusinessError = error as BusinessError;
189      console.error('deactivatePermission failed with err: ' + JSON.stringify(err));
190    }
191  }
192  ```
193