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

8 回复

背景知识:

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

鸿蒙Next应用权限采用分级管理,应用需在配置文件中声明所需权限。系统根据敏感度分为:敏感权限(如位置、相机)需用户动态授权;普通权限(如网络)安装时自动授予。此外,支持权限使用记录查询及一次性授权,提升隐私保护。

这两个权限在鸿蒙Next中并非彻底废弃,而是从公开权限列表移入了受限开放权限类别(级别为 system_basic)。应用无法直接声明和请求授权,需要先在 AppGallery Connect 开通对应 ACL(访问控制列表),再在 module.json5 中声明并通过华为侧审批,才可正常使用。官方公开文档通常只展示常规 user_grant 权限,因此查找不到属正常现象。若仅为调试,可在 DevEco Studio 中使用 ACL 临时授权进行测试。

回到顶部