# SaveButton 安全控件的ä¿å˜æŽ§ä»¶ï¼Œç”¨æˆ·é€šè¿‡ç‚¹å‡»è¯¥ä¿å˜æŒ‰é’®ï¼Œå¯ä»¥ä¸´æ—¶èŽ·å–å˜å‚¨æƒé™ï¼Œè€Œä¸éœ€è¦æƒé™å¼¹æ¡†æŽˆæƒç¡®è®¤ã€‚ > **说明:** > > 该组件从API Version 10开始支æŒã€‚åŽç»ç‰ˆæœ¬å¦‚æœ‰æ–°å¢žå†…å®¹ï¼Œåˆ™é‡‡ç”¨ä¸Šè§’æ ‡å•ç‹¬æ ‡è®°è¯¥å†…容的起始版本。 ## å组件 ä¸æ”¯æŒã€‚ ## æŽ¥å£ ### SaveButton SaveButton() é»˜è®¤åˆ›å»ºå¸¦æœ‰å›¾æ ‡ã€æ–‡æœ¬ã€èƒŒæ™¯çš„ä¿å˜æŒ‰é’®ã€‚ 为é¿å…æŽ§ä»¶æ ·å¼ä¸åˆæ³•å¯¼è‡´æŽˆæƒå¤±è´¥ï¼Œè¯·å¼€å‘è€…å…ˆäº†è§£å®‰å…¨æŽ§ä»¶æ ·å¼çš„[约æŸä¸Žé™åˆ¶](../../../security/AccessToken/security-component-overview.md#约æŸä¸Žé™åˆ¶)。 **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full ### SaveButton SaveButton(options:SaveButtonOptions) 创建包å«æŒ‡å®šå…ƒç´ çš„ä¿å˜æŒ‰é’®ã€‚ 为é¿å…æŽ§ä»¶æ ·å¼ä¸åˆæ³•å¯¼è‡´æŽˆæƒå¤±è´¥ï¼Œè¯·å¼€å‘è€…å…ˆäº†è§£å®‰å…¨æŽ§ä»¶æ ·å¼çš„[约æŸä¸Žé™åˆ¶](../../../security/AccessToken/security-component-overview.md#约æŸä¸Žé™åˆ¶)。 **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | options | [SaveButtonOptions](#savebuttonoptions) | 是 | 创建包å«æŒ‡å®šå…ƒç´ çš„ä¿å˜æŒ‰é’®ã€‚ | ## SaveButtonOptions 用于指定ä¿å˜æŒ‰é’®çš„å›¾æ ‡ã€æ–‡æœ¬ç‰æŒ‡å®šå…ƒç´ 。 > **说明:** > > - icon或textéœ€è‡³å°‘ä¼ å…¥ä¸€ä¸ªã€‚<br> > - 如果iconã€text都ä¸ä¼ 入,[SaveButton](#savebutton-1)ä¸çš„optionså‚æ•°ä¸èµ·æ•ˆï¼Œåˆ›å»ºçš„SaveButtonä¸ºé»˜è®¤æ ·å¼ï¼Œé»˜è®¤æ ·å¼ï¼š > > SaveIconStyleé»˜è®¤æ ·å¼ä¸ºFULL_FILLEDï¼› > > SaveDescriptioné»˜è®¤æ ·å¼ä¸ºDOWNLOADï¼› > > ButtonTypeé»˜è®¤æ ·å¼ä¸ºCapsule。 > - iconã€textã€buttonTypeä¸æ”¯æŒåŠ¨æ€ä¿®æ”¹ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | å称 | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | icon | [SaveIconStyle](#saveiconstyle枚举说明) | å¦ | 设置ä¿å˜æŒ‰é’®çš„å›¾æ ‡é£Žæ ¼<br/>ä¸ä¼ 入该å‚æ•°è¡¨ç¤ºæ²¡æœ‰å›¾æ ‡ã€‚ | | text | [SaveDescription](#savedescription枚举说明) | å¦ | 设置ä¿å˜æŒ‰é’®çš„文本æè¿°<br/>ä¸ä¼ 入该å‚数表示没有文å—æ述。 | | buttonType | [ButtonType](ts-basic-components-button.md#buttontype枚举说明) | å¦ | 设置ä¿å˜æŒ‰é’®çš„èƒŒæ™¯æ ·å¼<br/>ä¸ä¼ 入该å‚数,系统默认æä¾›Capsule类型按钮。 | ## SaveIconStyle枚举说明 **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | å称 | 值 | 说明 | | -------- | -------- | -------- | | FULL_FILLED | 0 | ä¿å˜æŒ‰é’®å±•ç¤ºå¡«å……æ ·å¼å›¾æ ‡ã€‚ | | LINES | 1 | ä¿å˜æŒ‰é’®å±•ç¤ºçº¿æ¡æ ·å¼å›¾æ ‡ã€‚ | ## SaveDescription枚举说明 **系统能力:** SystemCapability.ArkUI.ArkUI.Full | å称 | 值 | 说明 | | -------- | -------- | -------- | | DOWNLOAD | 0 | ä¿å˜æŒ‰é’®çš„æ–‡å—æ述为“下载â€ã€‚ <br/>**原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚| | DOWNLOAD_FILE | 1 | ä¿å˜æŒ‰é’®çš„æ–‡å—æ述为“下载文件â€ã€‚ <br/>**原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚| | SAVE | 2 | ä¿å˜æŒ‰é’®çš„æ–‡å—æ述为“ä¿å˜â€ã€‚ <br/>**原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚| | SAVE_IMAGE | 3 | ä¿å˜æŒ‰é’®çš„æ–‡å—æ述为“ä¿å˜å›¾ç‰‡â€ã€‚ <br/>**原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚| | SAVE_FILE | 4 | ä¿å˜æŒ‰é’®çš„æ–‡å—æ述为“ä¿å˜æ–‡ä»¶â€ã€‚ <br/>**原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚| | DOWNLOAD_AND_SHARE | 5 | ä¿å˜æŒ‰é’®çš„æ–‡å—æ述为“下载分享â€ã€‚ <br/>**原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚| | RECEIVE | 6 | ä¿å˜æŒ‰é’®çš„æ–‡å—æ述为“接收â€ã€‚ <br/>**原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚| | CONTINUE_TO_RECEIVE | 7 | ä¿å˜æŒ‰é’®çš„æ–‡å—æ述为“继ç»æŽ¥æ”¶â€ã€‚ <br/>**原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚| | SAVE_TO_GALLERY<sup>12+</sup> | 8 | ä¿å˜æŒ‰é’®çš„æ–‡å—æ述为“ä¿å˜è‡³å›¾åº“â€ã€‚ <br/>**原å化æœåŠ¡API:** 从API version 12开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚| | EXPORT_TO_GALLERY<sup>12+</sup> | 9 | ä¿å˜æŒ‰é’®çš„æ–‡å—æ述为“导出â€ã€‚ <br/>**原å化æœåŠ¡API:** 从API version 12开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚| | QUICK_SAVE_TO_GALLERY<sup>12+</sup> | 10 | ä¿å˜æŒ‰é’®çš„æ–‡å—æ述为“快速ä¿å˜å›¾ç‰‡â€ã€‚ <br/>**原å化æœåŠ¡API:** 从API version 12开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚| | RESAVE_TO_GALLERY<sup>12+</sup> | 11 | ä¿å˜æŒ‰é’®çš„æ–‡å—æ述为“é‡æ–°ä¿å˜â€ã€‚ <br/>**原å化æœåŠ¡API:** 从API version 12开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚| ## SaveButtonOnClickResult枚举说明 **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | å称 | 值 | 说明 | | -------- | -------- | -------- | | SUCCESS | 0 | ä¿å˜æŒ‰é’®ç‚¹å‡»æˆåŠŸã€‚ | | TEMPORARY_AUTHORIZATION_FAILED | 1 | ä¿å˜æŒ‰é’®ç‚¹å‡»åŽæƒé™æŽˆæƒå¤±è´¥ã€‚ | ## 属性 ä¸æ”¯æŒé€šç”¨å±žæ€§ï¼Œä»…继承[安全控件通用属性](ts-securitycomponent-attributes.md#属性)。 ## 事件 ä¸æ”¯æŒé€šç”¨äº‹ä»¶ï¼Œä»…支æŒä»¥ä¸‹äº‹ä»¶ï¼š ### onClick onClick(event: (event: ClickEvent, result: SaveButtonOnClickResult) => void) 点击动作触å‘该回调 **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | |------------|------|-------|---------| | event | [ClickEvent](ts-universal-events-click.md#clickevent对象说明) |是 |è§ClickEvent对象说明| | result | [SaveButtonOnClickResult](#savebuttononclickresult枚举说明)| 是 | å˜å‚¨æƒé™çš„授æƒç»“果,授æƒæ—¶é•¿ä¸º10秒,å³è§¦å‘点击åŽï¼Œå¯ä»¥åœ¨10秒之内ä¸é™åˆ¶æ¬¡æ•°çš„调用特定媒体库接å£ï¼Œè¶…出10秒的调用会鉴æƒå¤±è´¥ã€‚| ## 示例 ```ts // xxx.ets import { photoAccessHelper } from '@kit.MediaLibraryKit'; import { fileIo } from '@kit.CoreFileKit'; @Entry @Component struct Index { build() { Row() { Column({space:10}) { // 默认å‚æ•°ä¸‹ï¼Œå›¾æ ‡ã€æ–‡å—ã€èƒŒæ™¯éƒ½å˜åœ¨ SaveButton().onClick(async (event:ClickEvent, result:SaveButtonOnClickResult) => { if (result == SaveButtonOnClickResult.SUCCESS) { try { const context = getContext(this); let helper = photoAccessHelper.getPhotoAccessHelper(context); // onClick触å‘åŽ10秒内通过createAsset接å£åˆ›å»ºå›¾ç‰‡æ–‡ä»¶ï¼Œ10秒åŽcreateAssetæƒé™æ”¶å›žã€‚ let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'png'); // 使用uri打开文件,å¯ä»¥æŒç»å†™å…¥å†…容,写入过程ä¸å—时间é™åˆ¶ let file = await fileIo.open(uri, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE); // 写入文件 await fileIo.write(file.fd, "context"); // å…³é—文件 await fileIo.close(file.fd); } catch (error) { console.error("error is "+ JSON.stringify(error)); } } }) // ä¼ å…¥å‚æ•°å³è¡¨ç¤ºå…ƒç´ å˜åœ¨ï¼Œä¸ä¼ 入的å‚æ•°è¡¨ç¤ºå…ƒç´ ä¸å˜åœ¨ï¼Œå¦‚æžœä¸ä¼ å…¥buttonTypeï¼Œä¼šé»˜è®¤æ·»åŠ ButtonType.Capsuleé…ç½®ï¼Œæ˜¾ç¤ºå›¾æ ‡+背景。 SaveButton({icon:SaveIconStyle.FULL_FILLED}) // åªæ˜¾ç¤ºå›¾æ ‡+背景,如果设置背景色高八ä½çš„α值低于0x1A,则会被系统强制调整为0xFF SaveButton({icon:SaveIconStyle.FULL_FILLED, buttonType:ButtonType.Capsule}) .backgroundColor(0x10007dff) // å›¾æ ‡ã€æ–‡å—ã€èƒŒæ™¯éƒ½å˜åœ¨ï¼Œå¦‚果设置背景色高八ä½çš„α值低于0x1A,则会被系统强制调整为0xFF SaveButton({icon:SaveIconStyle.FULL_FILLED, text:SaveDescription.DOWNLOAD, buttonType:ButtonType.Capsule}) // å›¾æ ‡ã€æ–‡å—ã€èƒŒæ™¯éƒ½å˜åœ¨ï¼Œå¦‚果设置宽度å°äºŽå½“å‰å±žæ€§ç»„åˆä¸‹å…许的最å°å®½åº¦æ—¶ï¼Œå®½åº¦ä»ä¸ºè®¾ç½®å€¼ï¼Œæ¤æ—¶æŒ‰é’®æ–‡æœ¬ä¿¡æ¯ä¼šè‡ªåŠ¨æ¢è¡Œï¼Œä»¥ä¿è¯å®‰å…¨æŽ§ä»¶æ˜¾ç¤ºçš„完整性。 SaveButton({icon:SaveIconStyle.FULL_FILLED, text:SaveDescription.DOWNLOAD, buttonType:ButtonType.Capsule}) .fontSize(16) .width(30) // å›¾æ ‡ã€æ–‡å—ã€èƒŒæ™¯éƒ½å˜åœ¨ï¼Œå¦‚果设置宽度å°äºŽå½“å‰å±žæ€§ç»„åˆä¸‹å…许的最å°å®½åº¦æ—¶ï¼Œå®½åº¦ä»ä¸ºè®¾ç½®å€¼ï¼Œæ¤æ—¶æŒ‰é’®æ–‡æœ¬ä¿¡æ¯ä¼šè‡ªåŠ¨æ¢è¡Œï¼Œä»¥ä¿è¯å®‰å…¨æŽ§ä»¶æ˜¾ç¤ºçš„完整性。 SaveButton({icon:SaveIconStyle.FULL_FILLED, text:SaveDescription.DOWNLOAD, buttonType:ButtonType.Capsule}) .fontSize(16) .size({width: 30, height: 30}) // å›¾æ ‡ã€æ–‡å—ã€èƒŒæ™¯éƒ½å˜åœ¨ï¼Œå¦‚果设置宽度å°äºŽå½“å‰å±žæ€§ç»„åˆä¸‹å…许的最å°å®½åº¦æ—¶ï¼Œå®½åº¦ä»ä¸ºè®¾ç½®å€¼ï¼Œæ¤æ—¶æŒ‰é’®æ–‡æœ¬ä¿¡æ¯ä¼šè‡ªåŠ¨æ¢è¡Œï¼Œä»¥ä¿è¯å®‰å…¨æŽ§ä»¶æ˜¾ç¤ºçš„完整性。 SaveButton({icon:SaveIconStyle.FULL_FILLED, text:SaveDescription.DOWNLOAD, buttonType:ButtonType.Capsule}) .fontSize(16) .constraintSize({minWidth: 0, maxWidth: 30, minHeight: 0, maxHeight: 30}) }.width('100%') }.height('100%') } } ``` 