HarmonyOS 鸿蒙Next中ohos.permission.GET_TELEPHONY_STATE权限怎么获取
HarmonyOS 鸿蒙Next中ohos.permission.GET_TELEPHONY_STATE权限怎么获取 ohos.permission.GET_TELEPHONY_STATE权限怎么获取,如果应用属于系统应用,IccAccountInfo中可以获取手机号吗
ohos.permission.GET_TELEPHONY_STATE
属于系统权限级别,仅允许系统应用申请。该权限用于获取设备通话状态、SIM卡信息等敏感数据。需在module.json5
中声明并配置签名信息,且必须手动签名
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.GET_TELEPHONY_STATE",
"reason": "获取SIM卡信息",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "always"
}
}
]
}
}
更多关于HarmonyOS 鸿蒙Next中ohos.permission.GET_TELEPHONY_STATE权限怎么获取的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
官网文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-sim#simgetsimaccountinfo10
里面已经描述了:获取ICCID和号码信息时需要GET_TELEPHONY_STATE权限,ICCID和号码信息为敏感数据,不向三方应用开放。调用接口时,获取到的ICCID和号码信息为空。
所以除了系统应用,开发者自己开发的应用无法获取ohos.permission.GET_TELEPHONY_STATE权限。
系统应用具有ohos.permission.GET_TELEPHONY_STATE权限,是可以获取手机号码的。
在HarmonyOS Next中获取ohos.permission.GET_TELEPHONY_STATE权限需要在config.json文件中声明。具体步骤如下:
- 打开项目的config.json文件
- 在"module"下的"reqPermissions"节点中添加:
{
"name": "ohos.permission.GET_TELEPHONY_STATE",
"reason": "获取电话状态信息",
"usedScene": {
"ability": ["EntryAbility"],
"when": "always"
}
}
- 保存文件后重新编译项目。该权限属于system_grant类型,系统会自动授予。
关于HarmonyOS Next中获取ohos.permission.GET_TELEPHONY_STATE权限的问题:
- 权限申请流程:
- 在config.json配置文件中声明权限:
"reqPermissions": [
{
"name": "ohos.permission.GET_TELEPHONY_STATE",
"reason": "获取电话状态信息"
}
]
- 运行时动态申请权限(API 9+):
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
let atManager = abilityAccessCtrl.createAtManager();
atManager.requestPermissionsFromUser(this.context, ['ohos.permission.GET_TELEPHONY_STATE'])
.then((data) => {
// 处理授权结果
});
- 系统应用获取手机号: 对于系统应用,通过IccAccountInfo确实可以获取SIM卡信息,但需要注意:
- 仍需要声明并获取GET_TELEPHONY_STATE权限
- 获取手机号还需要READ_PHONE_NUMBERS权限
- 具体实现示例:
import radio from '@ohos.telephony.radio';
let simInfo = radio.getSimIccId(0); // 获取SIM卡信息
let phoneNumber = radio.getLineNumber(0); // 获取手机号
- 注意事项:
- 系统应用需要配置对应的apl级别
- 获取敏感信息需在隐私声明中说明用途
- 真机调试需要签名证书支持相应权限,