HarmonyOS 鸿蒙Next 获取设备名称api,申请权限问题
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
补充一下,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);
}
试试下面的方法
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。