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