HarmonyOS 鸿蒙Next如何打开系统设置中的相应的权限界面

发布于 1周前 作者 eggper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何打开系统设置中的相应的权限界面

没有权限 跳转到设置权限页面 根据文档下面目前语法报错

向用户申请授权-申请应用权限-应用权限管控-程序访问控制-安全-系统 - 华为HarmonyOS开发者 (huawei.com)

function openPermissionsInSystemSettings(): void {
  let context = getContext(this) as common.UIAbilityContext;
  let wantInfo = {
    action: 'action.settings.app.info',
    parameters: {
      settingsParamBundleName: 'com.example.myapplication' // 打开指定应用的详情页面
    }
  }
  context.startAbility(wantInfo).then(() => {
    // ...
  }).catch((err) => {
    // ...
  })
}

自己仿照写了一个 但是跳转过去是灰色的
openPermissionsInSystemSettings(){
  let wantInfo: Want = {
    action:'action.settings.app.info',
    parameters:{
      settingsParamBundleName: 'com.example.myapplication'
    }
  }
  this.context.startAbility(wantInfo).then((data) => {
    console.log('zss: openPermissionsInSystemSettings: ' + JSON.stringify(wantInfo));
  }).catch((error:Error) => {
    console.log('zss: openPermissionsInSystemSettings: ' + JSON.stringify(error));
  })
}

更多关于HarmonyOS 鸿蒙Next如何打开系统设置中的相应的权限界面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

Index文件

import { abilityAccessCtrl, common, Permissions, Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

const permissions: Array<Permissions> = ["ohos.permission.ACTIVITY_MOTION", "ohos.permission.CAMERA"];

function reqPermissionsFromUser(permissions: Array<Permissions>, context: common.UIAbilityContext): void {

  let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();

  atManager.requestPermissionsFromUser(context, permissions).then((data) => {

    let grantStatus: Array<number> = data.authResults;

    let length: number = grantStatus.length;

    for (let i = 0; i < length; i++) {

      if (grantStatus[i] === 0) {

        // 用户授权,可以继续访问目标操作

      } else {

        // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
        openPermissionsInSystemSettings(context)
        return;

      }

    }

    // 授权成功

  }).catch((err: BusinessError) => {

    console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);

  })

}

function openPermissionsInSystemSettings(context: common.UIAbilityContext): void {

  let wantInfo: Want = {
    bundleName: 'com.huawei.hmos.settings',
    abilityName: 'com.huawei.hmos.settings.MainAbility',
    uri: 'application_info_entry',
    parameters: {
      settingsParamBundleName: 'com.example.perssions'
    }
  }

  context.startAbility(wantInfo).then(() => {

  }).catch((error: Error) => {

  })

}

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  aboutToAppear() {

    const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;

    reqPermissionsFromUser(permissions, context);

  }

  build() {

    Row() {

      Column() {

        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)

      }
      .width('100%')

    }
    .height('100%')

  }
}

记得改变 settingsParamBundleName 的参数。

更多关于HarmonyOS 鸿蒙Next如何打开系统设置中的相应的权限界面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,打开系统设置中相应的权限界面通常需要通过系统提供的API或特定路径进行操作。由于鸿蒙系统有其独特的界面和交互设计,以下是直接针对鸿蒙系统打开权限界面的方法:

  1. 使用Intent跳转: 在鸿蒙应用中,你可以通过构造一个Intent对象,并设置适当的action和category来请求跳转到系统设置中的权限管理界面。不过,鸿蒙系统的Intent机制可能与Android有所不同,因此具体的action和category需要参考鸿蒙系统的官方文档。

  2. 直接访问设置页面URI: 鸿蒙系统可能允许通过特定的URI直接访问系统设置页面。你可以尝试使用鸿蒙提供的Uri类与Intent结合,指向具体的权限设置页面。但请注意,这种方法依赖于系统是否公开了这样的URI,且可能因系统版本而异。

  3. 引导用户手动设置: 如果上述方法不适用,你可以在应用内提供引导,告知用户如何手动前往系统设置中的权限管理界面。通常,这涉及到指导用户依次点击“设置”->“应用和服务”->“应用管理”->选择你的应用->“权限”,然后调整所需的权限。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部