• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.application.uriPermissionManager(URI权限管理)
2> **说明:**
3>
4> 本模块首批接口从API version 10 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
5
6
7URI权限管理模块。用于应用A授权/撤销授权URI给应用B
8
9
10## 导入模块
11
12
13```ts
14import uriPermissionManager from '@ohos.application.uriPermissionManager';
15```
16
17
18## uriPermissionManager.grantUriPermission
19
20grantUriPermission(uri: string, flag: wantConstant.Flags, targetBundleName: string, callback: AsyncCallback<number>): void;
21
22授权URI给指定应用,通过callback返回结果。
23
24默认仅允许授权属于应用自身的URI,若拥有权限ohos.permission.PROXY_AUTHORIZATION_URI则无限制。
25**系统API**:该接口为系统接口,三方应用不支持调用。
26
27**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
28
29**需要权限:** ohos.permission.PROXY_AUTHORIZATION_URI
30
31**参数:**
32
33  | 参数名 | 类型 | 必填 | 说明 |
34  | -------- | -------- | -------- | -------- |
35  | uri | string | 是 | 指向文件的URI,例如fileshare:///com.samples.filesharetest.FileShare/person/10。 |
36  | flag | [wantConstant.Flags](js-apis-app-ability-wantConstant.md#wantconstantflags) | 是 | URI的读权限或写权限。 |
37  | targetBundleName | string | 是 | 被授权URI的应用包名 |
38  | callback | AsyncCallback<number> | 是 | callback形式返回检验结果,返回0表示有权限,返回-1表示无权限。 |
39
40**错误码:**
41
42| 错误码ID | 错误信息 |
43| ------- | -------------------------------- |
44| 16000050 | Internal error. |
45| 16000058 | Invalid URI flag. |
46| 16000059 | Invalid URI type. |
47| 16000060 | Sandbox application can not grant URI permission. |
48
49以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
50
51**示例:**
52
53  ```ts
54  import uriPermissionManager from '@ohos.application.uriPermissionManager';
55  import WantConstant from '@ohos.app.ability.wantConstant';
56  import fs from '@ohos.file.fs';
57  import fileUri from '@ohos.file.fileuri';
58
59  let targetBundleName = 'com.example.test_case1'
60  let path = "file://com.example.test_case1/data/storage/el2/base/haps/entry_test/files/newDir";
61  fs.mkdir(path, (err) => {
62    if (err) {
63      console.log("mkdir error"+err.message)
64    } else {
65      console.log("mkdir succeed")
66    }
67  });
68  let uri = fileUri.getUriFromPath(path);
69  uriPermissionManager.grantUriPermission(uri, WantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, targetBundleName, (result) => {
70    console.log("result.code = " + result.code)
71  })
72  ```
73
74
75## uriPermissionManager.grantUriPermission
76
77grantUriPermission(uri: string, flag: wantConstant.Flags, targetBundleName: string): Promise<number>
78
79授权URI给指定应用,通过返回值返回结果。
80
81默认仅允许授权属于应用自身的URI,若拥有权限ohos.permission.PROXY_AUTHORIZATION_URI则无限制。
82**系统API**:该接口为系统接口,三方应用不支持调用。
83
84**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
85
86**需要权限:** ohos.permission.PROXY_AUTHORIZATION_URI
87
88**参数:**
89
90  | 参数名 | 类型 | 必填 | 说明 |
91  | -------- | -------- | -------- | -------- |
92  | uri | string | 是 | 指向文件的URI,例如fileshare:///com.samples.filesharetest.FileShare/person/10。 |
93  | flag | [wantConstant.Flags](js-apis-app-ability-wantConstant.md#wantconstantflags) | 是 | URI的读权限或写权限。 |
94  | targetBundleName | string | 是 | 被授权URI的应用包名 |
95
96**返回值:**
97
98  | 类型 | 说明 |
99  | -------- | -------- |
100  | Promise<number> | 返回0表示有权限,返回-1表示无权限。 |
101
102**错误码:**
103
104  | 错误码ID | 错误信息 |
105  | ------- | -------------------------------- |
106  | 16000050 | Internal error. |
107  | 16000058 | Invalid URI flag. |
108  | 16000059 | Invalid URI type. |
109  | 16000060 | Sandbox application can not grant URI permission. |
110
111  以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
112
113**示例:**
114
115  ```ts
116  import uriPermissionManager from '@ohos.application.uriPermissionManager';
117  import WantConstant from '@ohos.app.ability.wantConstant';
118  import fs from '@ohos.file.fs';
119  import fileUri from '@ohos.file.fileuri';
120  import { BusinessError } from '@ohos.base';
121
122  let targetBundleName = 'com.example.test_case1'
123  let path = "file://com.example.test_case1/data/storage/el2/base/haps/entry_test/files/newDir";
124
125  fs.mkdir(path, (err) => {
126    if (err) {
127      console.log("mkdir error"+err.message)
128    } else {
129      console.log("mkdir succeed")
130    }
131  });
132  let uri = fileUri.getUriFromPath(path);
133  uriPermissionManager.grantUriPermission(uri, WantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, targetBundleName)
134    .then((data) => {
135      console.log('Verification succeeded.' + data)
136    }).catch((error: BusinessError) => {
137    console.log('Verification failed.');
138  })
139  ```
140## uriPermissionManager.revokeUriPermission
141
142revokeUriPermission(uri: string, targetBundleName: string, callback: AsyncCallback<number>): void;
143
144撤销授权指定应用的URI,通过callback返回结果。
145
146默认仅允许撤销应用自身获得的其他应用URI,或应用授权给其他应用属于自身的URI。若拥有权限ohos.permission.PROXY_AUTHORIZATION_URI则无限制。
147**系统API**:该接口为系统接口,三方应用不支持调用。
148
149**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
150
151**需要权限:** ohos.permission.PROXY_AUTHORIZATION_URI
152
153**参数:**
154
155  | 参数名 | 类型 | 必填 | 说明 |
156  | -------- | -------- | -------- | -------- |
157  | uri | string | 是 | 指向文件的URI,例如fileshare:///com.samples.filesharetest.FileShare/person/10。 |
158  | targetBundleName | string | 是 | 被撤销授权uri的应用包名 |
159  | callback | AsyncCallback<number> | 是 | callback形式返回检验结果,返回0表示有权限,返回-1表示无权限。 |
160
161**错误码:**
162
163  | 错误码ID | 错误信息 |
164  | ------- | -------------------------------- |
165  | 16000050 | Internal error. |
166  | 16000059 | Invalid URI type. |
167
168  以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
169
170**示例:**
171
172  ```ts
173  import uriPermissionManager from '@ohos.application.uriPermissionManager';
174
175  let targetBundleName = 'com.example.test_case2'
176  let uri = "file://com.example.test_case1/data/storage/el2/base/haps/entry_test/files/newDir"
177  uriPermissionManager.revokeUriPermission(uri, targetBundleName, (result) => {
178      console.log("result.code = " + result.code)
179  })
180  ```
181
182
183## uriPermissionManager.revokeUriPermission
184
185revokeUriPermission(uri: string, targetBundleName: string): Promise<number>
186
187撤销授权指定应用的URI,通过返回值返回结果。
188
189
190默认仅允许撤销应用自身获得的其他应用URI,或应用授权给其他应用属于自身的URI。若拥有权限ohos.permission.PROXY_AUTHORIZATION_URI则无限制。
191**系统API**:该接口为系统接口,三方应用不支持调用。
192
193**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
194
195**需要权限:** ohos.permission.PROXY_AUTHORIZATION_URI
196
197
198**参数:**
199
200  | 参数名 | 类型 | 必填 | 说明 |
201  | -------- | -------- | -------- | -------- |
202  | uri | string | 是 | 指向文件的URI,例如fileshare:///com.samples.filesharetest.FileShare/person/10。 |
203  | targetBundleName | string | 是 | 被授权URI的应用包名 |
204
205**返回值:**
206
207  | 类型 | 说明 |
208  | -------- | -------- |
209  | Promise<number> | 返回0表示有权限,返回-1表示无权限。 |
210
211**错误码:**
212
213  | 错误码ID | 错误信息 |
214  | ------- | -------------------------------- |
215  | 16000050 | Internal error. |
216  | 16000059 | Invalid URI type. |
217
218  以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
219
220**示例:**
221
222  ```ts
223  import uriPermissionManager from '@ohos.application.uriPermissionManager';
224  import { BusinessError } from '@ohos.base';
225
226  let targetBundleName = 'com.example.test_case2'
227  let uri = "file://com.example.test_case1/data/storage/el2/base/haps/entry_test/files/newDir"
228  uriPermissionManager.revokeUriPermission(uri, targetBundleName)
229  .then((data) => {
230      console.log('Verification succeeded.' + data)
231  }).catch((error: BusinessError) => {
232      console.log('Verification failed.');
233  })
234  ```
235