HarmonyOS 鸿蒙Next中关于应用的权限问题
HarmonyOS 鸿蒙Next中关于应用的权限问题 我看到一个代码里写了要申请 ohos.permission.READ_CALL_LOG和ohos.permission.WRITE_CALL_LOG
saveOne(callLog: CallLog, callback) {
if (callLog.id <= 0) {
this.getDataAbilityHelper().then((dataAbilityHelper) => {
let callLogDelta = new CallLogDelta(callLog);
dataAbilityHelper.insert(Calls.CALL_LOG_URI, callLogDelta.createValuesBucket()).then(data => {
callback(data);
}).catch(error => {
HiLog.w(TAG, 'saveOne error:%s', JSON.stringify(error.message));
callback();
});
}).catch(error => {
HiLog.w(TAG, 'error:%s' + JSON.stringify(error.message));
callback();
});
}
}
代码是这样的,但是我在官方文档中没有找到这两个权限,是已经被废弃了吗
更多关于HarmonyOS 鸿蒙Next中关于应用的权限问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
背景知识:
1、ohos.permission.READ_CALL_LOG – 级别:system_basic
读取通话记录列表:号码、通话类型(呼入 / 呼出 / 未接)、时间、时长等
常见场景:通话记录备份、拨号助手、统计通话、骚扰电话识别。
2、ohos.permission.WRITE_CALL_LOG – 级别:system_basic
添加一条通话记录、删除、修改已有通话记录Huawei Developer
场景:通话记录清理工具、替换系统通话记录管理。
问题解决:
普通开发者(三方应用)默认不能直接用,但可以走 ACL 跨级别申请 + AGC 审核,有条件开放。
参考:如何添加ACL受限权限
更多关于HarmonyOS 鸿蒙Next中关于应用的权限问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
这俩权限,在HarmonyOS生态里已经不对普通应用开放。
可以看看反诈类型的应用,通过selectFraudCallLog获取通话记录。
想研究CallLog,可以再搜搜开源OpenHarmony。
ohos.permission.READ_CALL_LOG
ohos.permission.WRITE_CALL_LOG
您好,部分权限因为用户隐私和安全问题不再向普通用户开发
这两个权限:
ohos.permission.READ_CALL_LOG
ohos.permission.WRITE_CALL_LOG
并不是“废弃”了。
而是:
HarmonyOS NEXT(尤其 5.0+)里已经不再对普通应用开放。
所以你现在:
- 官方文档里搜不到
- ACL 里也申请不了
- 安装可能失败
- 或者申请不到权限
这是正常现象。
⸻
你这个代码其实是:
dataAbilityHelper.insert(Calls.CALL_LOG_URI)
直接操作系统通话记录数据库。
这种属于:
“高敏感权限”。
在 HarmonyOS NEXT 里已经被严格限制。
⸻
现在 HarmonyOS 5.0+ 的权限体系里:
通话记录、短信、系统电话能力,
已经基本属于:
system_basic
system_core
级别。
普通三方应用无法获取。
⸻
所以你看到:
READ_CALL_LOG
WRITE_CALL_LOG
很多是:
- 老 HarmonyOS API
- OpenHarmony 示例
- Android 兼容层代码
- 旧项目迁移代码
并不代表 NEXT 还能正常使用。
⸻
尤其:
HarmonyOS NEXT 已经不是 Android Runtime 了。
Android 那套:
CallLog.Calls
READ_CALL_LOG
在 NEXT 里很多能力都已经不开放。
⸻
你现在官方文档搜不到,
其实已经说明:
这个权限已经不再属于公开 SDK 权限。
⸻
另外你提到:
“ACL 里也申请了”
但 ACL 并不代表一定能用。
ACL 只是:
“允许调测阶段申请部分高权限”。
并不是:
“所有系统权限都能开放”。
目前公开 ACL 里主要是:
- 相册
- 剪贴板
- 联系人
- 悬浮窗
- 部分媒体权限
而:
READ_CALL_LOG
WRITE_CALL_LOG
并不属于当前开放 ACL 范围。
⸻
所以结论其实很明确:
HarmonyOS NEXT(5.0+)普通应用基本无法读写系统通话记录。
除非:
- 系统应用
- 预装应用
- 华为签名应用
- 特殊合作应用
否则拿不到。
⸻
你可以简单理解成:
和 Android 近几年对:
READ_CALL_LOG
严格限制类似。
只是 HarmonyOS NEXT 限制更严格。
是不是OpenHarmony中的权限,官网中只找到了这ohos.permission.CHECK_CALL_LOG
你说的这两个权限在文档没有了。应该是调整了。
受限开放权限-应用权限列表-应用权限管控-程序访问控制-安全-系统 - 华为HarmonyOS开发者
鸿蒙Next应用权限采用分级管理,应用需在配置文件中声明所需权限。系统根据敏感度分为:敏感权限(如位置、相机)需用户动态授权;普通权限(如网络)安装时自动授予。此外,支持权限使用记录查询及一次性授权,提升隐私保护。
这两个权限在鸿蒙Next中并非彻底废弃,而是从公开权限列表移入了受限开放权限类别(级别为 system_basic)。应用无法直接声明和请求授权,需要先在 AppGallery Connect 开通对应 ACL(访问控制列表),再在 module.json5 中声明并通过华为侧审批,才可正常使用。官方公开文档通常只展示常规 user_grant 权限,因此查找不到属正常现象。若仅为调试,可在 DevEco Studio 中使用 ACL 临时授权进行测试。

