HarmonyOS 鸿蒙Next 获取设备名称api,申请权限问题

发布于 1周前 作者 wuwangju 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 获取设备名称api,申请权限问题

import distributedDeviceManager from ‘@ohos.distributedDeviceManager’;
let dmInstance = distributedDeviceManager.createDeviceManager(‘自己应用的包名’);
let deviceName: string = dmInstance.getLocalDeviceName(); //获取设备名称

申请权限:

{
“name”: “ohos.permission.DISTRIBUTED_DATASYNC”,
“reason”: $string:module_desc”,
“usedScene”: {
“abilities”: [
“EntryAbility”
],
“when”: “always”
}
}

结果:运行报错还是提示没有申请权限,应用也出现闪退现象:Error message:Permission verification failed. The application does not have the permission required to call the API.


更多关于HarmonyOS 鸿蒙Next 获取设备名称api,申请权限问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

补充一下,ohos.permission.DISTRIBUTED_DATASYNC权限是授权方式是user_grant 的权限,参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/permissions-for-all-0000001820999669#ZH-CN_TOPIC_0000001857916709__ohospermissiondistributed_datasync

user_grant 这类权限不能配置在module.json5里面,需要通过弹窗后用户确认授权的方式来授权生效,参考demo:

深色代码主题
复制
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let context: Context = getContext(this) as common.UIAbilityContext;
atManager.requestPermissionsFromUser(context, ['ohos.permission.DISTRIBUTED_DATASYNC'], (err: BusinessError, data: PermissionRequestResult) => {
  if (err) {
    console.error(`requestPermissionsFromUser fail, err->${JSON.stringify(err)}`);
  } else {
    console.info('data:' + JSON.stringify(data));
    console.info('data permissions:' + data.permissions);
    console.info('data authResults:' + data.authResults);
    console.info('data dialogShownResults:' + data.dialogShownResults);
  }
});

更多关于HarmonyOS 鸿蒙Next 获取设备名称api,申请权限问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


使用getLocalDeviceName方法获取本地设备名称(可以在“关于本机”中进行修改的那个) 。该方法需要权限ohos.permission.DISTRIBUTED_DATASYNC ,demo代码如下:

深色代码主题
复制
import { BusinessError } from '@kit.BasicServicesKit';
import { distributedDeviceManager } from '@kit.DistributedServiceKit';

try { let dmInstance = distributedDeviceManager.createDeviceManager(‘ohos.samples.jsHelloWorld’); let deviceName: string = dmInstance.getLocalDeviceName(); console.log('local device name: ’ + JSON.stringify(deviceName)); } catch (err) { let e: BusinessError = err as BusinessError; console.error(‘getLocalDeviceName errCode:’ + e.code + ‘,errMessage:’ + e.message); }

参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-distributeddevicemanager-V5#getlocaldevicename

试试下面的方法

深色代码主题
复制
import { deviceInfo } from '@kit.BasicServicesKit';
深色代码主题
复制
deviceInfo.productModel,//手机型号
深色代码主题
复制
deviceInfo.osFullName,//操作系统版本
深色代码主题
复制
deviceInfo.marketName,//手机厂商

这个确实可以 但是获取设备名称 就是能够自定义的 好像这两个不是一个概念

在HarmonyOS(鸿蒙)系统中,要获取设备名称的API以及申请相关权限,可以按照以下步骤操作:

获取设备名称的API

在鸿蒙系统中,你可以使用ohos.system.SystemProperties类来获取设备名称。具体方法是调用SystemProperties.getName(String key),其中key通常为"hw_product_name"(具体可能因设备而异)。示例代码如下:

// 注意:此处仅为示例,实际应使用鸿蒙相关API
String deviceName = ohos.system.SystemProperties.getName("hw_product_name");

申请权限

在鸿蒙系统中,获取设备名称通常需要设备信息访问权限。你需要在config.json文件中声明相关权限。具体权限名称为ohos.permission.READ_DEVICE_IDENTITY

示例配置(config.json):

{
  "module": {
    "package": "your.package.name",
    "reqPermissions": [
      {
        "name": "ohos.permission.READ_DEVICE_IDENTITY"
      }
    ]
  }
}

在代码中,你无需显式申请该权限,因为这是一个普通权限,系统会自动授予。

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

回到顶部