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
【解决方案】
尊敬的开发者,您好,关于您反馈的问题,问题原因如下:
当前列表申请了受限权限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
}
})
// 这种方式适用于“粘贴”操作场景,符合最小授权原则,能提升用户体验。
对,是这个问题,我解决了,谢谢
一楼说的对,
- 剪贴板属于受限开放权限,申请场景参考ohos.permission.READ_PASTEBOARD。在满足条件的基础上,可通过申请应用权限获取权限,进行剪贴操作。
- 对于其他应用,读取剪贴板优先使用粘贴控件。
详细解决方案可参考官方示例:【访问剪贴板控件,没有剪贴板访问记录】
在HarmonyOS Next中,申请剪贴板读取权限需在module.json5中添加ohos.permission.READ_PASTEBOARD权限。运行时通过pasteboard.createPasteboard()获取Pasteboard实例,调用getData()前需使用abilityAccessCtrl.requestPermission()动态请求用户授权。
错误码 9568289 是安装时权限校验失败,通常与受限权限的授权状态有关。ohos.permission.READ_PASTEBOARD 是受限权限,除在 module.json5 声明外,还必须在 AppGallery Connect 中申请 ACL 并通过审核。请检查:
- ACL 申请状态是否为“已通过”。
- 安装时所使用的签名证书(及 Profile)与 ACL 申请时绑定的证书一致(正式签名或已授权的调试证书)。
module.json5中已正确声明该权限。
以上条件同时满足后,重新打包安装即可。


