harmony 鸿蒙@ohos.application.uriPermissionManager(URI权限管理)

  • 2023-06-24
  • 浏览 (581)

@ohos.application.uriPermissionManager(URI权限管理)

说明:

本模块首批接口从API version 10 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

URI权限管理模块。用于应用A授权/撤销授权URI给应用B

导入模块

import uriPermissionManager from '@ohos.application.uriPermissionManager';

uriPermissionManager.grantUriPermission

grantUriPermission(uri: string, flag: wantConstant.Flags, targetBundleName: string, callback: AsyncCallback<number>): void;

授权URI给指定应用,通过callback返回结果。

默认仅允许授权属于应用自身的URI,若拥有权限ohos.permission.PROXY_AUTHORIZATION_URI则无限制。 系统API:该接口为系统接口,三方应用不支持调用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

需要权限: ohos.permission.PROXY_AUTHORIZATION_URI

参数:

参数名 类型 必填 说明
uri string 指向文件的URI,例如fileshare:///com.samples.filesharetest.FileShare/person/10。
flag wantConstant.Flags URI的读权限或写权限。
targetBundleName string 被授权URI的应用包名
callback AsyncCallback<number> callback形式返回检验结果,返回0表示有权限,返回-1表示无权限。

错误码:

错误码ID 错误信息
16000050 Internal error.
16000058 Invalid URI flag.
16000059 Invalid URI type.
16000060 Sandbox application can not grant URI permission.

以上错误码详细介绍请参考errcode-ability

示例:

  import uriPermissionManager from '@ohos.application.uriPermissionManager';
  import WantConstant from '@ohos.app.ability.wantConstant';
  import fs from '@ohos.file.fs';
  import fileUri from '@ohos.file.fileuri';

  let targetBundleName = 'com.example.test_case1'
  let path = "file://com.example.test_case1/data/storage/el2/base/haps/entry_test/files/newDir";
  fs.mkdir(path, (err) => {
    if (err) {
      console.log("mkdir error"+err.message)
    } else {
      console.log("mkdir succeed")
    }
  });
  let uri = fileUri.getUriFromPath(path);
  uriPermissionManager.grantUriPermission(uri, WantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, targetBundleName, (result) => {
    console.log("result.code = " + result.code)
  })

uriPermissionManager.grantUriPermission

grantUriPermission(uri: string, flag: wantConstant.Flags, targetBundleName: string): Promise<number>

授权URI给指定应用,通过返回值返回结果。

默认仅允许授权属于应用自身的URI,若拥有权限ohos.permission.PROXY_AUTHORIZATION_URI则无限制。 系统API:该接口为系统接口,三方应用不支持调用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

需要权限: ohos.permission.PROXY_AUTHORIZATION_URI

参数:

参数名 类型 必填 说明
uri string 指向文件的URI,例如fileshare:///com.samples.filesharetest.FileShare/person/10。
flag wantConstant.Flags URI的读权限或写权限。
targetBundleName string 被授权URI的应用包名

返回值:

类型 说明
Promise<number> 返回0表示有权限,返回-1表示无权限。

错误码:

错误码ID 错误信息
16000050 Internal error.
16000058 Invalid URI flag.
16000059 Invalid URI type.
16000060 Sandbox application can not grant URI permission.

以上错误码详细介绍请参考errcode-ability

示例:

  import uriPermissionManager from '@ohos.application.uriPermissionManager';
  import WantConstant from '@ohos.app.ability.wantConstant';
  import fs from '@ohos.file.fs';
  import fileUri from '@ohos.file.fileuri';
  import { BusinessError } from '@ohos.base';

  let targetBundleName = 'com.example.test_case1'
  let path = "file://com.example.test_case1/data/storage/el2/base/haps/entry_test/files/newDir";

  fs.mkdir(path, (err) => {
    if (err) {
      console.log("mkdir error"+err.message)
    } else {
      console.log("mkdir succeed")
    }
  });
  let uri = fileUri.getUriFromPath(path);
  uriPermissionManager.grantUriPermission(uri, WantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, targetBundleName)
    .then((data) => {
      console.log('Verification succeeded.' + data)
    }).catch((error: BusinessError) => {
    console.log('Verification failed.');
  })

uriPermissionManager.revokeUriPermission

revokeUriPermission(uri: string, targetBundleName: string, callback: AsyncCallback<number>): void;

撤销授权指定应用的URI,通过callback返回结果。

默认仅允许撤销应用自身获得的其他应用URI,或应用授权给其他应用属于自身的URI。若拥有权限ohos.permission.PROXY_AUTHORIZATION_URI则无限制。 系统API:该接口为系统接口,三方应用不支持调用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

需要权限: ohos.permission.PROXY_AUTHORIZATION_URI

参数:

参数名 类型 必填 说明
uri string 指向文件的URI,例如fileshare:///com.samples.filesharetest.FileShare/person/10。
targetBundleName string 被撤销授权uri的应用包名
callback AsyncCallback<number> callback形式返回检验结果,返回0表示有权限,返回-1表示无权限。

错误码:

错误码ID 错误信息
16000050 Internal error.
16000059 Invalid URI type.

以上错误码详细介绍请参考errcode-ability

示例:

  import uriPermissionManager from '@ohos.application.uriPermissionManager';

  let targetBundleName = 'com.example.test_case2'
  let uri = "file://com.example.test_case1/data/storage/el2/base/haps/entry_test/files/newDir"
  uriPermissionManager.revokeUriPermission(uri, targetBundleName, (result) => {
      console.log("result.code = " + result.code)
  }) 

uriPermissionManager.revokeUriPermission

revokeUriPermission(uri: string, targetBundleName: string): Promise<number>

撤销授权指定应用的URI,通过返回值返回结果。

默认仅允许撤销应用自身获得的其他应用URI,或应用授权给其他应用属于自身的URI。若拥有权限ohos.permission.PROXY_AUTHORIZATION_URI则无限制。 系统API:该接口为系统接口,三方应用不支持调用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

需要权限: ohos.permission.PROXY_AUTHORIZATION_URI

参数:

参数名 类型 必填 说明
uri string 指向文件的URI,例如fileshare:///com.samples.filesharetest.FileShare/person/10。
targetBundleName string 被授权URI的应用包名

返回值:

类型 说明
Promise<number> 返回0表示有权限,返回-1表示无权限。

错误码:

错误码ID 错误信息
16000050 Internal error.
16000059 Invalid URI type.

以上错误码详细介绍请参考errcode-ability

示例:

  import uriPermissionManager from '@ohos.application.uriPermissionManager';
  import { BusinessError } from '@ohos.base';

  let targetBundleName = 'com.example.test_case2'
  let uri = "file://com.example.test_case1/data/storage/el2/base/haps/entry_test/files/newDir"
  uriPermissionManager.revokeUriPermission(uri, targetBundleName)
  .then((data) => {
      console.log('Verification succeeded.' + data)
  }).catch((error: BusinessError) => {
      console.log('Verification failed.');
  })

你可能感兴趣的鸿蒙文章

harmony 鸿蒙接口

harmony 鸿蒙系统公共事件定义(待停用)

harmony 鸿蒙系统公共事件定义

harmony 鸿蒙开发说明

harmony 鸿蒙企业设备管理概述(仅对系统应用开放)

harmony 鸿蒙BundleStatusCallback

harmony 鸿蒙@ohos.bundle.innerBundleManager (innerBundleManager模块)

harmony 鸿蒙@ohos.distributedBundle (分布式包管理)

harmony 鸿蒙@ohos.bundle (Bundle模块)

harmony 鸿蒙@ohos.enterprise.EnterpriseAdminExtensionAbility (企业设备管理扩展能力)

0  赞