HarmonyOS 鸿蒙Next中ohos.permission.GET_TELEPHONY_STATE权限怎么获取

HarmonyOS 鸿蒙Next中ohos.permission.GET_TELEPHONY_STATE权限怎么获取 ohos.permission.GET_TELEPHONY_STATE权限怎么获取,如果应用属于系统应用,IccAccountInfo中可以获取手机号吗

4 回复

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文件中声明。具体步骤如下:

  1. 打开项目的config.json文件
  2. 在"module"下的"reqPermissions"节点中添加:
{
  "name": "ohos.permission.GET_TELEPHONY_STATE",
  "reason": "获取电话状态信息",
  "usedScene": {
    "ability": ["EntryAbility"],
    "when": "always"
  }
}
  1. 保存文件后重新编译项目。该权限属于system_grant类型,系统会自动授予。

关于HarmonyOS Next中获取ohos.permission.GET_TELEPHONY_STATE权限的问题:

  1. 权限申请流程:
  • 在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) => {
        // 处理授权结果
    });
  1. 系统应用获取手机号: 对于系统应用,通过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); // 获取手机号
  1. 注意事项:
  • 系统应用需要配置对应的apl级别
  • 获取敏感信息需在隐私声明中说明用途
  • 真机调试需要签名证书支持相应权限,
回到顶部