HarmonyOS鸿蒙Next中申请剪贴板读取权限

HarmonyOS鸿蒙Next中申请剪贴板读取权限 code:9568289

error: install failed due to grant request permissions failed.

PermissionName: ohos.permission.READ_PASTEBOARD

提示这个,我需要做点什么吗,看了半天文档,看得我懵懵的

在ACL权限里面也申请了ohos.permission.READ_PASTEBOARD

11 回复

解决方案
尊敬的开发者,您好,关于您反馈的问题,问题原因如下:

当前列表申请了受限权限ohos.permission.READ_PASTEBOARD。如果申请了受限权限并在module.json5文件中进行了配置,检查AGC上申请Profile文件的时候,是否已勾选相应的受限权限,如果没有需要重新申请Profile文件,并勾选相应的受限权限。

ohos.permission.READ_PASTEBOARD权限属于受限权限,参考受限权限申请步骤

受限权限通常是不允许三方应用申请的。如果有特殊场景需要使用,请提供相关申请材料到AppGallery Connect(简称为AGC)申请相应权限证书。

在申请前,请审视是否符合受限权限的使用场景。为避免应用的上架申请被驳回,开发者应优先使用Picker/控件等替代方案,仅少量符合特殊场景的应用被允许申请受限权限。

注意
在应用上架时,AGC将根据应用的使用场景审核是否可以使用对应的受限权限。如检测到应用软件包涉及获取受限权限,应用开发者需为每个受限权限项填写相应的权限说明,并上传视频说明使用场景,详情请见发布HarmonyOS应用

可申请此权限的特殊场景与功能:

  • PC/2in1设备上的应用均可申请。

    • 说明
      • 在PC/2in1设备上,应用首次申请剪贴板权限时,不会向用户弹窗申请,系统将默认授予“允许”。但用户可以在“设置 > 隐私与安全”的页面中修改授权方式。
      • 同时,用户在PC/2in1设备的“设置”界面中,仅可选择“允许”或“禁止”两种授权选项;其他设备有“始终允许”、“每次使用询问”、“禁止”三种授权选项。
  • 其他设备只有符合以下场景可申请:

    • 银行卡号复制:银行类应用需要读取剪贴板中的银行卡号自动生成卡片。
    • 口令复制:应用需要读取剪贴板中特定格式口令,自动打开应用内对应页面。
    • 文档编辑类应用。
    • 输入法:系统级输入法需要读取剪贴板信息实现自动填充。应用内置输入法不能申请此权限。
    • 应用中使用了开源框架:由于不能使用粘贴控件,允许申请剪贴板权限。

其他场景下的使用方案: 使用“粘贴控件”读取剪贴板数据,使用方式请参考:使用粘贴控件

申请后AGC的审核时长: 预计3个工作日内反馈审核结果。

更多关于HarmonyOS鸿蒙Next中申请剪贴板读取权限的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


如果你在申请了权限后更新了项目的签名文件和SHA256证书/公钥指纹。并且也下载了新的Profile文件编译后还是不行那这个不是你代码写错了,而是权限本身的问题。

ohos.permission.READ_PASTEBOARD 在 HarmonyOS NEXT 里属于受限权限,不是普通应用随便申请就能用的。

所以即使你:

  • ACL 里申请了
  • module.json5 里声明了

安装时还是会直接报:

install failed due to grant request permissions failed

目前这个权限基本只开放给:

  • 输入法
  • 系统应用
  • 特殊合作应用

普通三方 APP 一般拿不到。

如果你只是:

  • 用户点击按钮后读取剪贴板
  • 输入框粘贴
  • 主动触发读取

其实根本不需要申请这个权限。

直接正常用:

import { pasteboard } from '@kit.BasicServicesKit'

let pb = pasteboard.getSystemPasteboard()
let data = pb.getDataSync()

就行。

真正被限制的是:

  • 后台监听剪贴板
  • APP启动自动读取
  • 静默读取
  • 跨应用监控剪贴板

HarmonyOS NEXT 现在对这个管得非常严。

建议你先把:

ohos.permission.READ_PASTEBOARD

删掉。

否则很多情况下:

  • HAP 安装失败
  • 真机打不开
  • 上架审核不过

都会出现。

一句话:

HarmonyOS NEXT 默认允许“用户主动触发”的剪贴板读取,但不允许普通应用后台静默读取剪贴板。

好的,更新了Profile就行了,之前的Profile没有写入权限

读取剪贴板是受限权限,你看看是不是因为你在module.json5/config.json中声明了这个权限,但是你的应用类型、签名、证书或者ACL中没有对应授权?

你如果说不是必须读取剪切板的话,你可以把这个权限删掉,然后用安全控件里的复制剪切。

// 使用安全控件作为替代方案
// 如果应用仅需在用户主动触发时读取剪切板内容,可以使用系统提供的 PasteButton安全控件。用户点击该按钮即视为临时授权,无需应用事先申请 READ_PASTEBOARD权限。但此授权为临时性,应用退到后台或关闭后即失效。

// 示例:使用PasteButton
PasteButton()
  .onClick((event: ClickEvent, result: PasteButtonOnClickResult) => {
    if (result.code === 0) {
      // 用户点击授权,可读取剪切板
      let pasteData = pasteboard.getSystemPasteboard().getDataSync();
      // 处理pasteData
    }
  })
// 这种方式适用于“粘贴”操作场景,符合最小授权原则,能提升用户体验。

对,是这个问题,我解决了,谢谢

一楼说的对,

  1. 剪贴板属于受限开放权限,申请场景参考ohos.permission.READ_PASTEBOARD。在满足条件的基础上,可通过申请应用权限获取权限,进行剪贴操作。
  2. 对于其他应用,读取剪贴板优先使用粘贴控件

详细解决方案可参考官方示例:【访问剪贴板控件,没有剪贴板访问记录】

在HarmonyOS Next中,申请剪贴板读取权限需在module.json5中添加ohos.permission.READ_PASTEBOARD权限。运行时通过pasteboard.createPasteboard()获取Pasteboard实例,调用getData()前需使用abilityAccessCtrl.requestPermission()动态请求用户授权。

错误码 9568289 是安装时权限校验失败,通常与受限权限的授权状态有关。ohos.permission.READ_PASTEBOARD 是受限权限,除在 module.json5 声明外,还必须在 AppGallery Connect 中申请 ACL 并通过审核。请检查:

  1. ACL 申请状态是否为“已通过”。
  2. 安装时所使用的签名证书(及 Profile)与 ACL 申请时绑定的证书一致(正式签名或已授权的调试证书)。
  3. module.json5 中已正确声明该权限。

以上条件同时满足后,重新打包安装即可。

回到顶部