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