鸿蒙应用权限

应用权限管控

文档中心

ArkTS

常见权限

  • 允许应用查看蓝牙的配置。 ohos.permission.USE_BLUETOOTH
  • 在本设备上允许应用访问通知策略。ohos.permission.ACCESS_NOTIFICATION_POLICY
  • 允许应用获取数据网络信息。ohos.permission.GET_NETWORK_INFO
  • 允许应用获取Wi-Fi信息。ohos.permission.GET_WIFI_INFO
  • 允许应用使用相机。ohos.permission.CAMERA
  • 允许应用获取设备位置信息。ohos.permission.LOCATION
  • 允许应用获取设备模糊位置信息。ohos.permission.APPROXIMATELY_LOCATION
  • 允许应用使用麦克风。ohos.permission.MICROPHONE
  • 允许应用读取日历信息。ohos.permission.READ_CALENDAR
  • 允许应用添加、移除或更改日历活动。ohos.permission.WRITE_CALENDAR
  • 允许应用读取媒体库的图片与视频。ohos.permission.READ_IMAGEVIDEO或ohos.permission.WRITE_IMAGEVIDEO
  • 允许应用读写媒体库的音频文件。ohos.permission.READ_AUDIO或ohos.permission.WRITE_AUDIO
  • 允许应用读取剪贴板。ohos.permission.READ_PASTEBOARD
  • 选择保存用户文件文档中心

 封装应用权限方法

import { abilityAccessCtrl, bundleManager, common, Permissions } from '@kit.AbilityKit';
import { notificationManager } from '@kit.NotificationKit';
class PermissionManager {

  // 检查是否授权
  checkPermissions(permissions: Permissions[]) {
    // 程序访问控制管理
    const atManager = abilityAccessCtrl.createAtManager();
    // 获取 bundle 信息
    const bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)
    // 提取 tokenID 标识
    const tokenID = bundleInfo.appInfo.accessTokenId
    // 校验应用是否被授予权限
    const authResults = permissions.map((item) => atManager.checkAccessTokenSync(tokenID, item))
    console.log('authResults', authResults)
    // 返回是否已授权结果
    return authResults.every(v => v === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED)
  }

  // 动态申请授权
  async requestPermissions(permissions: Permissions[]) {
    // 程序访问控制管理
    const atManager = abilityAccessCtrl.createAtManager();
    // 拉起弹框请求用户授权
    const grantStatus = await atManager.requestPermissionsFromUser(getContext(), permissions)
    console.log('grantStatus', grantStatus)
    // 获取请求权限的结果
    const isAuth = grantStatus.authResults.every(v => v === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED)
    // 返回 Promise 授权结果
    return isAuth ? Promise.resolve(true) : Promise.reject(false)
  }

  // 打开系统设置的权限管理页(处理授权结果)
  openPermissionSettingsPage(uri: string) {
    // 获取上下文
    const context = getContext() as common.UIAbilityContext
    // 获取包信息
    const bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)
    console.log('bundleInfo', JSON.stringify(bundleInfo))
    // 打开系统设置页
    context.startAbility({
      bundleName: 'com.huawei.hmos.settings',
      abilityName: 'com.huawei.hmos.settings.MainAbility',
      uri,
      parameters: {
        // 按照包名打开对应设置页
        pushParams: {
          bundleName: context.abilityInfo.bundleName//拉起方应用包名
        }
      }
    })
  }

  // 应用通知权限
  async requestNotificationPermission() {
    try {
      // 获取上下文
      const context = getContext() as common.UIAbilityContext;
      await notificationManager.requestEnableNotification(context);
      console.info("requestEnableNotification success");
      return true;
    } catch (err) {
      console.error(`requestEnableNotification fail: ${JSON.stringify(err)}`);
      return false;
    }
  }
}

// 导出类的实例
export const permissionManager = new PermissionManager()

uri字段与设置页面对应表格

使用 permissionManager.openPermissionSettingsPage('systemui_notification_settings')

字段

拉起界面

手机设备是否支持

2in1设备是否支持

/

HOME-设置

wifi_entry

HOME-WLAN

bluetooth_entry

HOME-蓝牙

mobile_network_entry

HOME-移动网络

hotspot_data_settings

HOME-移动网络-个人热点界面

password_entry

HOME-移动网络-个人热点-密码界面

connected_device_entry

HOME-移动网络-个人热点-已连接设备界面

more_share_entry

HOME-移动网络-个人热点-更多共享设置界面

more_connections_settings

HOME-更多连接

nfc_settings

HOME-更多连接-NFC三级页面

display_settings

HOME-显示和亮度

screen_zoom

HOME-显示和亮度-显示大小三级页面

screen_refresh_rate_entry

HOME-显示和亮度-屏幕刷新率三级页面

需看具体设备是否有刷新率选项

volume_settings

HOME-声音和振动

systemui_notification_settings

HOME-通知和状态栏

accessibility_feature

HOME-辅助功能

accessibility_operation_entry

HOME-辅助功能-辅助功能快捷键三级页面

accessibility_more_settings_entry

HOME-辅助功能-已安装的服务-服务详情-更多设置五级页面

application_and_service_settings

HOME-应用与元服务

application_settings

HOME-应用与服务-应用管理三级页面

application_info_entry

HOME-应用和元服务HOME-某个具体应用的应用信息,需传递want.parameters.pushParams为具体应用的包名

storage_settings

HOME-存储界面

battery

HOME-电池

biometrics_and_password_settings

HOME-生物识别和密码

lock_screen_password_title

HOME-生物识别和密码-设置数字锁屏密码

change_six_to_number_entry

HOME-生物识别和密码-锁屏密码(其他密码类型)-自定义数字密码(设置锁屏数字密码)四级页面

change_six_to_mixed_entry

HOME-生物识别和密码-锁屏密码(其他密码类型)-混合密码(设置锁屏密码)四级页面

fingerprint_settings_entry

HOME-生物识别与密码-指纹3级页面

需看具体设备是否支持指纹解锁能力

privacy_settings

HOME-隐私与安全

location_help_entry

HOME-隐私与安全-定位服务-帮助四级页面

users_accounts

HOME-用户和账户

current_user

HOME-用户和账户-当前登录(用户)三级页面

system_and_updates

HOME-系统和更新

time_zone_settings

HOME-系统和更新-日期时间-时区-时区选择列表

date_and_time

HOME-系统和更新-日期时间三级页面

set_inputHOME-系统和更新-输入法页面

set_language

HOME-系统和更新-语言和输入法-语言和输入法四级页面

set_language_region

HOME-系统和更新-语言和输入法-语言和地区-语言和地区5级页面

reset_settings

HOME-系统和更新-重置三级页面

developer_options_settings

HOME-系统和更新-开发人员选项三级页面

edit_language_entry

HOME-系统和更新-语言和输入法-语言和地区-编辑(编译语言)五级页面

add_language_entry

HOME-系统和更新-语言和输入法-语言和地区-添加语言五级页面

select_region_entry

HOME-系统和更新-语言和输入法-语言和地区-当前地区(选择地区)五级页面

reset_factory_settings

HOME-系统和更新-重置-恢复出厂设置四级页面

reset_net_settings

HOME-系统和更新-重置-还原网络设置四级页面

reset_confirm_settings

HOME-系统和更新-重置-恢复出厂设置-重置手机五级页面

reset_net_confirm_settings

HOME-系统和更新-重置-还原网络设置-还原网络设置确认五级页面

about_device

HOME-关于本机界面

device_name

HOME-关于本机-设备名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值