文章目录组件核心介绍1. 组件定义2. 核心价值代码核心接口与参数1. 构造方法2. PasteButtonOptions 参数3. 枚举一览事件与回调1. 唯一支持事件onClick2. 回调参数3. 结果枚举4. 常见错误码代码场景说明1. 默认按钮2. 仅图标 / 仅文字3. 完整样式配置4. 多种按钮形状5. 尺寸约束总结组件核心介绍1. 组件定义PasteButton是 HarmonyOS 提供的安全控件用于安全获取系统剪贴板文本。不支持子组件仅继承安全控件通用属性仅支持onClick事件点击后由系统授权防劫持、防篡改2. 核心价值无需在module.json5中声明剪贴板权限系统级临时授权更安全统一 UI 规范避免违规获取剪贴板代码// PasteButtonDemo.ets// 官方参考https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-security-components-pastebuttonimport{pasteboard,BusinessError}fromkit.BasicServicesKit;EntryComponentstruct PasteButtonDemo{StatepasteText:string剪贴板内容将显示在这里;// API 18 标准回调类型handlePasteResult:PasteButtonCallback(event:ClickEvent,result:PasteButtonOnClickResult,error?:BusinessErrorvoid){if(resultPasteButtonOnClickResult.SUCCESS){console.info(PasteButton 授权成功);// 授权成功后读取剪贴板pasteboard.getSystemPasteboard().getData((err:BusinessError,data:pasteboard.PasteData){if(!err){this.pasteTextdata.getPrimaryText()||空内容;console.info(读取剪贴板内容,this.pasteText);}else{this.pasteText读取失败err.message;}});}else{console.error(授权失败错误码,error?.code, 信息,error?.message);this.pasteText授权失败[${error?.code}]:${error?.message};}};build(){Column({space:12}){Text(PasteButton 安全粘贴控件示例).fontSize(20).fontWeight(FontWeight.Bold).margin({top:20});Text(this.pasteText).fontSize(16).margin({top:10,bottom:10});// 1. 默认样式图标文字胶囊按钮Text(1. 默认按钮).fontSize(16);PasteButton().onClick(this.handlePasteResult);// 2. 仅图标Text(2. 仅图标).fontSize(16);PasteButton({icon:PasteIconStyle.LINES}).onClick(this.handlePasteResult);// 3. 仅文字Text(3. 仅文字).fontSize(16);PasteButton({text:PasteDescription.PASTE}).onClick(this.handlePasteResult);// 4. 完整配置图标文字按钮类型Text(4. 完整配置按钮).fontSize(16);PasteButton({icon:PasteIconStyle.LINES,text:PasteDescription.PASTE,buttonType:ButtonType.Capsule}).backgroundColor(0xFF2D7CFF).fontColor(Color.White).iconColor(Color.White).fontSize(16).iconSize(20).padding({left:20,right:20,top:8,bottom:8}).onClick(this.handlePasteResult);// 5. 圆角矩形按钮Text(5. 圆角矩形按钮).fontSize(16);PasteButton({icon:PasteIconStyle.LINES,text:PasteDescription.PASTE,buttonType:ButtonType.ROUNDED_RECTANGLE}).borderRadius(12).onClick(this.handlePasteResult);// 6. 圆形按钮Text(6. 圆形按钮).fontSize(16);PasteButton({icon:PasteIconStyle.LINES,buttonType:ButtonType.Circle}).size({width:50,height:50}).onClick(this.handlePasteResult);// 7. 自定义约束尺寸Text(7. 约束尺寸按钮).fontSize(16);PasteButton({icon:PasteIconStyle.LINES,text:PasteDescription.PASTE,buttonType:ButtonType.Capsule}).constraintSize({maxWidth:150,maxHeight:40}).onClick(this.handlePasteResult);}.padding(20).width(100%)}}运行效果如图核心接口与参数1. 构造方法// 默认构造PasteButton()// 自定义配置构造PasteButton(options:PasteButtonOptions)2. PasteButtonOptions 参数参数名类型说明默认值iconPasteIconStyle图标样式LINEStextPasteDescription按钮文本PASTEbuttonTypeButtonType按钮形状Capsule3. 枚举一览PasteIconStyle: LINES仅支持这一种PasteDescription: PASTE仅支持这一种ButtonType: Normal / Capsule / Circle / ROUNDED_RECTANGLE事件与回调1. 唯一支持事件onClickonClick(event:PasteButtonCallback)2. 回调参数(event:ClickEvent,result:PasteButtonOnClickResult,error?:BusinessErrorvoid)3. 结果枚举结果值含义SUCCESS0授权成功TEMPORARY_AUTHORIZATION_FAILED1授权失败4. 常见错误码0成功1系统内部错误2样式非法文字太小/颜色太近/被遮挡/截断等代码场景说明1. 默认按钮自动包含图标 文字 胶囊背景PasteButton().onClick(this.handlePasteResult)2. 仅图标 / 仅文字不传入text→ 只显示图标不传入icon→ 只显示文字3. 完整样式配置支持backgroundColorfontColor / iconColorfontSize / iconSizepadding4. 多种按钮形状Capsule胶囊ROUNDED_RECTANGLE圆角矩形Circle圆形5. 尺寸约束使用constraintSize限制最大宽高系统自动适配布局.constraintSize({maxWidth:150,maxHeight:40})总结必须至少显示 icon 或 text 其中一种文字、图标不能过小、不可被遮挡、不可被截断按钮不能超出屏幕范围padding 不能为负值颜色对比度不能太低不支持动态修改 icon、text、buttonType如果这篇文章对你有帮助欢迎点赞、收藏、关注你的支持是持续创作的动力
HarmonyOS 6 PasteButton 安全粘贴控件使用文档
发布时间:2026/5/18 15:57:19
文章目录组件核心介绍1. 组件定义2. 核心价值代码核心接口与参数1. 构造方法2. PasteButtonOptions 参数3. 枚举一览事件与回调1. 唯一支持事件onClick2. 回调参数3. 结果枚举4. 常见错误码代码场景说明1. 默认按钮2. 仅图标 / 仅文字3. 完整样式配置4. 多种按钮形状5. 尺寸约束总结组件核心介绍1. 组件定义PasteButton是 HarmonyOS 提供的安全控件用于安全获取系统剪贴板文本。不支持子组件仅继承安全控件通用属性仅支持onClick事件点击后由系统授权防劫持、防篡改2. 核心价值无需在module.json5中声明剪贴板权限系统级临时授权更安全统一 UI 规范避免违规获取剪贴板代码// PasteButtonDemo.ets// 官方参考https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-security-components-pastebuttonimport{pasteboard,BusinessError}fromkit.BasicServicesKit;EntryComponentstruct PasteButtonDemo{StatepasteText:string剪贴板内容将显示在这里;// API 18 标准回调类型handlePasteResult:PasteButtonCallback(event:ClickEvent,result:PasteButtonOnClickResult,error?:BusinessErrorvoid){if(resultPasteButtonOnClickResult.SUCCESS){console.info(PasteButton 授权成功);// 授权成功后读取剪贴板pasteboard.getSystemPasteboard().getData((err:BusinessError,data:pasteboard.PasteData){if(!err){this.pasteTextdata.getPrimaryText()||空内容;console.info(读取剪贴板内容,this.pasteText);}else{this.pasteText读取失败err.message;}});}else{console.error(授权失败错误码,error?.code, 信息,error?.message);this.pasteText授权失败[${error?.code}]:${error?.message};}};build(){Column({space:12}){Text(PasteButton 安全粘贴控件示例).fontSize(20).fontWeight(FontWeight.Bold).margin({top:20});Text(this.pasteText).fontSize(16).margin({top:10,bottom:10});// 1. 默认样式图标文字胶囊按钮Text(1. 默认按钮).fontSize(16);PasteButton().onClick(this.handlePasteResult);// 2. 仅图标Text(2. 仅图标).fontSize(16);PasteButton({icon:PasteIconStyle.LINES}).onClick(this.handlePasteResult);// 3. 仅文字Text(3. 仅文字).fontSize(16);PasteButton({text:PasteDescription.PASTE}).onClick(this.handlePasteResult);// 4. 完整配置图标文字按钮类型Text(4. 完整配置按钮).fontSize(16);PasteButton({icon:PasteIconStyle.LINES,text:PasteDescription.PASTE,buttonType:ButtonType.Capsule}).backgroundColor(0xFF2D7CFF).fontColor(Color.White).iconColor(Color.White).fontSize(16).iconSize(20).padding({left:20,right:20,top:8,bottom:8}).onClick(this.handlePasteResult);// 5. 圆角矩形按钮Text(5. 圆角矩形按钮).fontSize(16);PasteButton({icon:PasteIconStyle.LINES,text:PasteDescription.PASTE,buttonType:ButtonType.ROUNDED_RECTANGLE}).borderRadius(12).onClick(this.handlePasteResult);// 6. 圆形按钮Text(6. 圆形按钮).fontSize(16);PasteButton({icon:PasteIconStyle.LINES,buttonType:ButtonType.Circle}).size({width:50,height:50}).onClick(this.handlePasteResult);// 7. 自定义约束尺寸Text(7. 约束尺寸按钮).fontSize(16);PasteButton({icon:PasteIconStyle.LINES,text:PasteDescription.PASTE,buttonType:ButtonType.Capsule}).constraintSize({maxWidth:150,maxHeight:40}).onClick(this.handlePasteResult);}.padding(20).width(100%)}}运行效果如图核心接口与参数1. 构造方法// 默认构造PasteButton()// 自定义配置构造PasteButton(options:PasteButtonOptions)2. PasteButtonOptions 参数参数名类型说明默认值iconPasteIconStyle图标样式LINEStextPasteDescription按钮文本PASTEbuttonTypeButtonType按钮形状Capsule3. 枚举一览PasteIconStyle: LINES仅支持这一种PasteDescription: PASTE仅支持这一种ButtonType: Normal / Capsule / Circle / ROUNDED_RECTANGLE事件与回调1. 唯一支持事件onClickonClick(event:PasteButtonCallback)2. 回调参数(event:ClickEvent,result:PasteButtonOnClickResult,error?:BusinessErrorvoid)3. 结果枚举结果值含义SUCCESS0授权成功TEMPORARY_AUTHORIZATION_FAILED1授权失败4. 常见错误码0成功1系统内部错误2样式非法文字太小/颜色太近/被遮挡/截断等代码场景说明1. 默认按钮自动包含图标 文字 胶囊背景PasteButton().onClick(this.handlePasteResult)2. 仅图标 / 仅文字不传入text→ 只显示图标不传入icon→ 只显示文字3. 完整样式配置支持backgroundColorfontColor / iconColorfontSize / iconSizepadding4. 多种按钮形状Capsule胶囊ROUNDED_RECTANGLE圆角矩形Circle圆形5. 尺寸约束使用constraintSize限制最大宽高系统自动适配布局.constraintSize({maxWidth:150,maxHeight:40})总结必须至少显示 icon 或 text 其中一种文字、图标不能过小、不可被遮挡、不可被截断按钮不能超出屏幕范围padding 不能为负值颜色对比度不能太低不支持动态修改 icon、text、buttonType如果这篇文章对你有帮助欢迎点赞、收藏、关注你的支持是持续创作的动力