diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-event-formextensionability.md b/zh-cn/application-dev/application-models/arkts-ui-widget-event-formextensionability.md index 013faa26d8ace700d410de69a7e2b9bbade50c1a..58c0fe89f8e4c8a32271a27c09e4a657802474d7 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-event-formextensionability.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-event-formextensionability.md @@ -65,12 +65,11 @@ - 在FormExtensionAbility的onFormEvent生命周期中调用[updateForm](../reference/apis/js-apis-app-form-formProvider.md#updateform)接口刷新卡片。 ```ts - import formInfo from '@ohos.app.form.formInfo'; + import type Base from '@ohos.base'; import formBindingData from '@ohos.app.form.formBindingData'; import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; import formProvider from '@ohos.app.form.formProvider'; import hilog from '@ohos.hilog'; - import type Want from '@ohos.app.ability.Want'; const TAG: string = 'EntryFormAbility'; const DOMAIN_NUMBER: number = 0xFF00; @@ -89,9 +88,9 @@ let formInfo: formBindingData.FormBindingData = formBindingData.createFormBindingData(formData); formProvider.updateForm(formId, formInfo).then(() => { hilog.info(DOMAIN_NUMBER, TAG, 'FormAbility updateForm success.'); - }).catch((error) => { + }).catch((error: Base.BusinessError) => { hilog.info(DOMAIN_NUMBER, TAG, `Operation updateForm failed. Cause: ${JSON.stringify(error)}`); - }); + }) } ... } diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-event-overview.md b/zh-cn/application-dev/application-models/arkts-ui-widget-event-overview.md index aca40638b183d7af1335bdda0f60078e2cb797c1..6111af5bfb3d8ce1d409761cc3d43c18d7571fdd 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-event-overview.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-event-overview.md @@ -1,69 +1,15 @@ # 卡片事件能力说明 -针对动态卡片,ArkTS卡片中提供了postCardAction()接口用于卡片内部和提供方应用间的交互,当前支持router、message和call三种类型的事件,仅在卡片中可以调用。 +针对动态卡片,ArkTS卡片中提供了[postCardAction()](../reference/apis/js-apis-postCardAction.md#postcardaction)接口用于卡片内部和提供方应用间的交互,当前支持router、message和call三种类型的事件,仅在卡片中可以调用。
针对静态卡片,ArkTS卡片提供了[FormLink](../reference/arkui-ts/ts-container-formlink.md)用于卡片内部和提供方应用间的交互。 ## 动态卡片事件能力说明 ![WidgetPostCardAction](figures/WidgetPostCardAction.png) -
接口定义:postCardAction(component: Object, action: Object): void - -接口参数说明: - - -| **参数名** | **参数类型** | **必填** | **参数描述** | -| -------- | -------- | -------- | -------- | -| component | Object | 是 | 当前自定义组件的实例,通常传入this。 | -| action | Object | 是 | action的具体描述,详情见下表。 | - - -action参数说明: - - -| **Key** | **Value** | **样例描述** | -| -------- | -------- | -------- | -| "action" | string | action的类型,支持三种预定义的类型:
- "router":跳转到提供方应用的指定UIAbility。
- "message":自定义消息,触发后会调用提供方FormExtensionAbility的[onFormEvent()](../reference/apis/js-apis-app-form-formExtensionAbility.md#onformevent)生命周期回调。
- "call":后台启动提供方应用。触发后会拉起提供方应用的指定UIAbility(仅支持launchType为singleton的[UIAbility](uiability-launch-type.md),即启动模式为单实例的UIAbility),但不会调度到前台。提供方应用需要具备后台运行权限([ohos.permission.KEEP_BACKGROUND_RUNNING](../security/AccessToken/permissions-for-all.md#ohospermissionkeep_background_running))。 | -| "bundleName" | string | "action"为"router" / "call" 类型时跳转的包名,可选。 | -| "moduleName" | string | "action"为"router" / "call" 类型时跳转的模块名,可选。 | -| "abilityName" | string | "action"为"router" / "call" 类型时跳转的UIAbility名,必填。 | -| "params" | Object | 当前action携带的额外参数,内容使用JSON格式的键值对形式。必填。 | - ->![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> ->"action"为"call" 类型时,"params"需填入参数'method',且类型需为string类型,用于触发UIAbility中对应的方法。 - -`postCardAction()`接口示例代码: - -```ts -Button('跳转') - .width('40%') - .height('20%') - .onClick(() => { - postCardAction(this, { - action: 'router', - bundleName: 'com.example.myapplication', - abilityName: 'EntryAbility', - params: { - message: 'testForRouter' // 自定义要发送的message - } - }); - }) - -Button('拉至后台') - .width('40%') - .height('20%') - .onClick(() => { - postCardAction(this, { - action: 'call', - bundleName: 'com.example.myapplication', - abilityName: 'EntryAbility', - params: { - method: 'fun', // 自定义调用的方法名,必填 - message: 'testForCall' // 自定义要发送的message - } - }); - }) -``` +动态卡片事件的主要使用场景如下: +- router事件:可以使用router事件跳转到指定UIAbility,并通过router事件刷新卡片内容。 +- call事件:可以使用call事件拉起指定UIAbility到后台,并通过call事件刷新卡片内容。 +- message事件:可以使用message拉起FormExtensionAbility,并通过FormExtensionAbility刷新卡片内容。 ## 静态卡片事件能力说明 请参见[FormLink](../reference/arkui-ts/ts-container-formlink.md) diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-event-uiability.md b/zh-cn/application-dev/application-models/arkts-ui-widget-event-uiability.md index 252847474a0957e51a8f967b08b6e9ffb3c0a6dd..ca96ab30b785cdd0e22060b3c0621132c822c758 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-event-uiability.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-event-uiability.md @@ -1,7 +1,7 @@ # 通过router或call事件刷新卡片内容 -在卡片页面中可以通过**postCardAction**接口触发router事件或者call事件拉起UIAbility,然后由UIAbility刷新卡片内容,下面是这种刷新方式的简单示例。 +在卡片页面中可以通过[postCardAction()](../reference/apis/js-apis-postCardAction.md#postcardaction)接口触发router事件或者call事件拉起UIAbility,然后由UIAbility刷新卡片内容,下面是这种刷新方式的简单示例。 > **说明:** > @@ -9,14 +9,14 @@ ## 通过router事件刷新卡片内容 -- 在卡片页面通过注册Button的onClick点击事件回调,并在回调中调用**postCardAction**接口触发router事件拉起UIAbility。 +- 在卡片页面通过注册Button的onClick点击事件回调,并在回调中调用[postCardAction()](../reference/apis/js-apis-postCardAction.md#postcardaction)接口触发router事件拉起UIAbility。 ```ts - let storageUpdtRouter = new LocalStorage(); + let storageUpdateRouter = new LocalStorage(); - @Entry(storageUpdtRouter) + @Entry(storageUpdateRouter) @Component - struct WidgetUpdtRouterCard { + struct WidgetUpdateRouterCard { @LocalStorageProp('routerDetail') routerDetail: ResourceStr = $r('app.string.init'); build() { @@ -92,7 +92,7 @@ let message: string = JSON.stringify(want.parameters.routerDetail); hilog.info(DOMAIN_NUMBER, TAG, `UpdateForm formId: ${curFormId}, message: ${message}`); let formData: Record = { - routerDetail: message + 'UIAbility.', // 和卡片布局中对应 + 'routerDetail': message + 'UIAbility.', // 和卡片布局中对应 }; let formMsg = formBindingData.createFormBindingData(formData); formProvider.updateForm(want.parameters[formInfo.FormParam.IDENTITY_KEY] + '', formMsg).then((data) => { @@ -111,7 +111,7 @@ let message: string = JSON.stringify(want.parameters.routerDetail); hilog.info(DOMAIN_NUMBER, TAG, `UpdateForm formId: ${curFormId}, message: ${message}`); let formData: Record = { - routerDetail: message + 'onNewWant UIAbility.', // 和卡片布局中对应 + 'routerDetail': message + 'onNewWant UIAbility.', // 和卡片布局中对应 }; let formMsg = formBindingData.createFormBindingData(formData); formProvider.updateForm(want.parameters[formInfo.FormParam.IDENTITY_KEY] + '', formMsg).then((data) => { @@ -147,7 +147,6 @@ ```ts import formBindingData from '@ohos.app.form.formBindingData'; import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; - import formInfo from '@ohos.app.form.formInfo'; import type Want from '@ohos.app.ability.Want'; export default class WidgetCalleeFormAbility extends FormExtensionAbility { @@ -171,9 +170,9 @@ - 在卡片页面通过注册Button的onClick点击事件回调,并在回调中调用**postCardAction**接口触发call事件拉起UIAbility。 ```ts - let storageUpdtCall = new LocalStorage(); + let storageUpdateCall = new LocalStorage(); - @Entry(storageUpdtCall) + @Entry(storageUpdateCall) @Component struct WidgetUpdateCallCard { @LocalStorageProp('formId') formId: string = '12400633174999288'; @@ -228,6 +227,7 @@ ```ts import type AbilityConstant from '@ohos.app.ability.AbilityConstant'; + import type Base from '@ohos.base'; import formBindingData from '@ohos.app.form.formBindingData'; import formProvider from '@ohos.app.form.formProvider'; import hilog from '@ohos.hilog'; @@ -272,12 +272,12 @@ let message: string = params.calleeDetail; hilog.info(DOMAIN_NUMBER, TAG, `UpdateForm formId: ${curFormId}, message: ${message}`); let formData: Record = { - calleeDetail: message + 'calleeDetail': message }; let formMsg: formBindingData.FormBindingData = formBindingData.createFormBindingData(formData); formProvider.updateForm(curFormId, formMsg).then((data) => { hilog.info(DOMAIN_NUMBER, TAG, `updateForm success. ${JSON.stringify(data)}`); - }).catch((error) => { + }).catch((error: Base.BusinessError) => { hilog.error(DOMAIN_NUMBER, TAG, `updateForm failed: ${JSON.stringify(error)}`); }); } diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-image-update.md b/zh-cn/application-dev/application-models/arkts-ui-widget-image-update.md index cb8beb94752057a942b31d6b20ec9f5a78c03548..366274530045309c81f03bd7b257c852d1aac8a7 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-image-update.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-image-update.md @@ -13,16 +13,9 @@ import type fileFs from '@ohos.file.fs'; import formBindingData from '@ohos.app.form.formBindingData'; import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; - import formInfo from '@ohos.app.form.formInfo'; - import formProvider from '@ohos.app.form.formProvider'; import fs from '@ohos.file.fs'; - import hilog from '@ohos.hilog'; - import request from '@ohos.request'; import type Want from '@ohos.app.ability.Want'; - const TAG: string = 'WgtImgUpdateEntryFormAbility'; - const DOMAIN_NUMBER: number = 0xFF00; - export default class WgtImgUpdateEntryFormAbility extends FormExtensionAbility { // 在添加卡片时,打开一个本地图片并将图片内容传递给卡片页面显示 onAddForm(want: Want): formBindingData.FormBindingData { @@ -38,7 +31,7 @@ }; } catch (e) { console.error(`openSync failed: ${JSON.stringify(e as Base.BusinessError)}`); - }; + } class FormDataClass { text: string = 'Image: Bear'; @@ -64,12 +57,10 @@ import type fileFs from '@ohos.file.fs'; import formBindingData from '@ohos.app.form.formBindingData'; import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; - import formInfo from '@ohos.app.form.formInfo'; import formProvider from '@ohos.app.form.formProvider'; import fs from '@ohos.file.fs'; import hilog from '@ohos.hilog'; import request from '@ohos.request'; - import type Want from '@ohos.app.ability.Want'; const TAG: string = 'WgtImgUpdateEntryFormAbility'; const DOMAIN_NUMBER: number = 0xFF00; @@ -99,7 +90,7 @@ fileInfo[fileName] = file.fd; } catch (e) { console.error(`openSync failed: ${JSON.stringify(e as Base.BusinessError)}`); - }; + } class FormDataClass { text: string = 'Image: Bear' + fileName; @@ -132,7 +123,7 @@ } ``` -4. 在卡片页面通过Image组件展示EntryFormAbility传递过来的卡片内容。 +4. 在卡片页面通过backgroundImage属性展示EntryFormAbility传递过来的卡片内容。 ```ts let storageWidgetImageUpdate = new LocalStorage(); diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-interaction-overview.md b/zh-cn/application-dev/application-models/arkts-ui-widget-interaction-overview.md index 0ef91cf7071c85c6b5570a0b8e1665b7da757fb3..c8594478c38eaf7e659423f9b63f9bc3d1021b63 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-interaction-overview.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-interaction-overview.md @@ -1,6 +1,7 @@ # 卡片数据交互说明 -ArkTS卡片框架提供了updateForm()接口和requestForm()接口主动触发卡片的页面刷新,通过[LocalStorageProp](../quick-start/arkts-localstorage.md#localstorageprop)确认需要刷新的卡片数据。 +ArkTS卡片框架提供了[updateForm()](../reference/apis/js-apis-app-form-formProvider.md#updateform)接口和requestForm()接口主动触发卡片的页面刷新,通过[LocalStorageProp](../quick-start/arkts-localstorage.md#localstorageprop)确认需要刷新的卡片数据。 + ![WidgetLocalStorageProp](figures/WidgetLocalStorageProp.png) diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-page-animation.md b/zh-cn/application-dev/application-models/arkts-ui-widget-page-animation.md index 769bc24d07d8099921039875e4b9b6c361a2d705..c728aa42b0ea96afa96874b4c86a35f368819b11 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-page-animation.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-page-animation.md @@ -24,32 +24,24 @@ ArkTS卡片开放了使用动画效果的能力,支持[显式动画](../refere ```ts @Entry @Component -struct AttrAnimationCard { +struct AnimationCard { @State rotateAngle: number = 0; build() { - Column() { - Button() { - Text($r('app.string.change_rotate_angle')) - .fontColor('#45A6F4') - .fontSize(12) - } - .width(120) - .height(32) - .backgroundColor('#FFFFFF') - .borderRadius(16) - .onClick(() => { - this.rotateAngle = (this.rotateAngle === 0 ? 90 : 0); - }) - .rotate({ angle: this.rotateAngle }) - .animation({ - curve: Curve.EaseOut, - playMode: PlayMode.Normal, - }) - }.height('100%').width('100%') - .justifyContent(FlexAlign.Center) - .backgroundImage($r('app.media.CardExampleBkg')) - .backgroundImageSize(ImageSize.Cover) + Row() { + Button('change rotate angle') + .height('20%') + .width('90%') + .margin('5%') + .onClick(() => { + this.rotateAngle = (this.rotateAngle === 0 ? 90 : 0); + }) + .rotate({ angle: this.rotateAngle }) + .animation({ + curve: Curve.EaseOut, + playMode: PlayMode.Normal, + }) + }.height('100%').alignItems(VerticalAlign.Center) } } ``` diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-proxy.md b/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-proxy.md index ed4d537de43863bba0be6efe3673a08a68c65c7b..5f3524e18a82b36049cb6b02e7cf39604f67fe6a 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-proxy.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-proxy.md @@ -80,7 +80,6 @@ > > key可以是uri也可以是简单字符串,subscriberId默认值为当前formId,实际取值都依赖于数据发布方的定义。 ```ts - import formInfo from '@ohos.app.form.formInfo'; import formBindingData from '@ohos.app.form.formBindingData'; import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; import hilog from '@ohos.hilog'; @@ -171,7 +170,6 @@ import dataShare from '@ohos.data.dataShare'; import type formBindingData from '@ohos.app.form.formBindingData'; import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; - import formInfo from '@ohos.app.form.formInfo'; import type Want from '@ohos.app.ability.Want'; export default class PersistentDataFormAbility extends FormExtensionAbility { diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-time.md b/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-time.md index 0356f443d12931f31af44d617f0bfc907b7c7ab1..776f51a03b6f08aac4dbb86a3c68a8bb8309b385 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-time.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-time.md @@ -14,7 +14,7 @@ > 也可以为已经安装的应用动态配置刷新周期,用来限制卡片刷新周期的时长,以达到降低周期刷新进程启动次数的目的。 >
● 当配置了`updateDuration`(定时刷新)后,若应用市场动态配置了该应用的刷新周期, > 卡片框架会将form_config.json文件中配置的刷新周期与应用市场配置的刷新周期进行比较,取较长的刷新周期做为该卡片的定时刷新周期。 - >
● 若应用市场未动态配置该应用的刷新周期,则以form_config.json文件中配置的定时刷新为准。 + >
● 若应用市场未动态配置该应用的刷新周期,则以form_config.json文件中配置的刷新周期为准。 >
● 若该卡片取消定时刷新功能,该规则将无效。 >
● 卡片定时刷新的更新周期单位为30分钟。应用市场配置的刷新周期范围是1~336,即最短为半小时(1 * 30min)刷新一次,最长为一周(336 * 30min)刷新一次。 >
● 该规则从API11开始生效。若小于API11,则以form_config.json文件中配置的刷新周期为准。 @@ -81,9 +81,7 @@ ```ts import type Base from '@ohos.base'; - import formBindingData from '@ohos.app.form.formBindingData'; import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; - import formInfo from '@ohos.app.form.formInfo'; import formProvider from '@ohos.app.form.formProvider'; import hilog from '@ohos.hilog'; @@ -107,7 +105,7 @@ }); } catch (err) { hilog.info(DOMAIN_NUMBER, TAG, `Failed to setFormNextRefreshTime. Code: ${(err as Base.BusinessError).code}, message: ${(err as Base.BusinessError).message}`); - }; + } } ... } diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-working-principles.md b/zh-cn/application-dev/application-models/arkts-ui-widget-working-principles.md index c1a0c733bccd9e370255c2ef08c8a31876c0b699..6a6e4f44365e6b967351922b2bbf8682901970bb 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-working-principles.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-working-principles.md @@ -34,7 +34,7 @@ - 增强了卡片的能力,使卡片更加万能。 - 新增了动效的能力:ArkTS卡片开放了[属性动画](../reference/arkui-ts/ts-animatorproperty.md)和[显式动画](../reference/arkui-ts/ts-explicit-animation.md)的能力,使卡片的交互更加友好。 - - 新增了自定义绘制的能力:ArkTS卡片开放了[Canvas](../reference/arkui-ts/ts-components-canvas-canvas.md)画布组件,卡片可以使用自定义绘制的能力构建更多样的显示和交互效果。 + - 新增了自定义绘制的能力:ArkTS卡片开放了[Canvas](../reference/arkui-ts/ts-components-canvas-canvas.md)画布组件的能力,卡片可以使用自定义绘制的能力构建更多样的显示和交互效果。 - 允许卡片中运行逻辑代码:开放逻辑代码运行后很多业务逻辑可以在卡片内部自闭环,拓宽了卡片的业务适用场景。 ## ArkTS卡片的约束 @@ -47,7 +47,7 @@ ArkTS卡片相较于JS卡片具备了更加丰富的能力,但也增加了使 - 不支持使用native语言开发。 -- 仅支持声明式范式的[部分](arkts-ui-widget-page-overview.md)组件、事件、动效、数据管理、状态管理和API能力。 +- 仅支持[声明式范式](../reference/arkui-ts/ts-components-summary.md)的部分组件、事件、动效、数据管理、状态管理和API能力。 - 卡片的事件处理和使用方的事件处理是独立的,建议在使用方支持左右滑动的场景下卡片内容不要使用左右滑动功能的组件,以防手势冲突影响交互体验。 diff --git a/zh-cn/application-dev/application-models/js-ui-widget-development.md b/zh-cn/application-dev/application-models/js-ui-widget-development.md index 20f0e650120297c8bc78a7da859a4f79ca1b7f16..3f7cfb943cbb757b1b53608e38e53c5958cb7271 100644 --- a/zh-cn/application-dev/application-models/js-ui-widget-development.md +++ b/zh-cn/application-dev/application-models/js-ui-widget-development.md @@ -118,8 +118,8 @@ Stage卡片开发,即基于[Stage模型](stage-model-development-overview.md) hilog.info(DOMAIN_NUMBER, TAG, '[EntryFormAbility] onAddForm'); // 使用方创建卡片时触发,提供方需要返回卡片数据绑定类 let obj: Record = { - title: 'titleOnCreate', - detail: 'detailOnCreate' + 'title': 'titleOnCreate', + 'detail': 'detailOnCreate' }; let formData: formBindingData.FormBindingData = formBindingData.createFormBindingData(obj); return formData; @@ -132,8 +132,8 @@ Stage卡片开发,即基于[Stage模型](stage-model-development-overview.md) // 若卡片支持定时更新/定点更新/卡片使用方主动请求更新功能,则提供方需要重写该方法以支持数据更新 hilog.info(DOMAIN_NUMBER, TAG, '[EntryFormAbility] onUpdateForm'); let obj: Record = { - title: 'titleOnUpdate', - detail: 'detailOnUpdate' + 'title': 'titleOnUpdate', + 'detail': 'detailOnUpdate' }; let formData: formBindingData.FormBindingData = formBindingData.createFormBindingData(obj); formProvider.updateForm(formId, formData).catch((error: Base.BusinessError) => { @@ -252,7 +252,6 @@ import type common from '@ohos.app.ability.common'; import dataPreferences from '@ohos.data.preferences'; import formBindingData from '@ohos.app.form.formBindingData'; import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; -import formProvider from '@ohos.app.form.formProvider'; import hilog from '@ohos.hilog'; import type Want from '@ohos.app.ability.Want'; @@ -263,9 +262,9 @@ const DOMAIN_NUMBER: number = 0xFF00; let storeFormInfo = async (formId: string, formName: string, tempFlag: boolean, context: common.FormExtensionContext): Promise => { // 此处仅对卡片ID:formId,卡片名:formName和是否为临时卡片:tempFlag进行了持久化 let formInfo: Record = { - formName: formName, - tempFlag: tempFlag, - updateCount: 0 + 'formName': formName, + 'tempFlag': tempFlag, + 'updateCount': 0 }; try { const storage: dataPreferences.Preferences = await dataPreferences.getPreferences(context, DATA_STORAGE_PATH); @@ -292,8 +291,8 @@ export default class JsCardFormAbility extends FormExtensionAbility { } let obj: Record = { - title: 'titleOnCreate', - detail: 'detailOnCreate' + 'title': 'titleOnCreate', + 'detail': 'detailOnCreate' }; let formData: formBindingData.FormBindingData = formBindingData.createFormBindingData(obj); return formData; @@ -308,11 +307,8 @@ export default class JsCardFormAbility extends FormExtensionAbility { import type Base from '@ohos.base'; import type common from '@ohos.app.ability.common'; import dataPreferences from '@ohos.data.preferences'; -import formBindingData from '@ohos.app.form.formBindingData'; import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; -import formProvider from '@ohos.app.form.formProvider'; import hilog from '@ohos.hilog'; -import type Want from '@ohos.app.ability.Want'; const TAG: string = 'JsCardFormAbility'; const DATA_STORAGE_PATH: string = '/data/storage/el2/base/haps/form_store'; @@ -372,8 +368,8 @@ export default class EntryFormAbility extends FormExtensionAbility { // 若卡片支持定时更新/定点更新/卡片使用方主动请求更新功能,则提供方需要重写该方法以支持数据更新 hilog.info(DOMAIN_NUMBER, TAG, '[EntryFormAbility] onUpdateForm'); let obj: Record = { - title: 'titleOnUpdate', - detail: 'detailOnUpdate' + 'title': 'titleOnUpdate', + 'detail': 'detailOnUpdate' }; let formData: formBindingData.FormBindingData = formBindingData.createFormBindingData(obj); formProvider.updateForm(formId, formData).catch((error: Base.BusinessError) => { @@ -628,23 +624,25 @@ export default class EntryFormAbility extends FormExtensionAbility { import UIAbility from '@ohos.app.ability.UIAbility'; import AbilityConstant from '@ohos.app.ability.AbilityConstant'; import Want from '@ohos.app.ability.Want'; + import hilog from '@ohos.hilog'; const TAG: string = 'JsCardEntryAbility'; const DOMAIN_NUMBER: number = 0xFF00; export default class EntryAbility extends UIAbility { onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { - if (want.parameters) { - let params: Record = JSON.parse(JSON.stringify(want.parameters.params)); - // 获取router事件中传递的info参数 - if (params.info === 'router info') { - // do something - hilog.info(DOMAIN_NUMBER, TAG, `router info: ${params.info}`); - } - // 获取router事件中传递的message参数 - if (params.message === 'router message') { - // do something - hilog.info(DOMAIN_NUMBER, TAG, `router message: ${params.message}`); + if (want.parameters) { + let params: Record = JSON.parse(JSON.stringify(want.parameters.params)); + // 获取router事件中传递的info参数 + if (params.info === 'router info') { + // 执行业务逻辑 + hilog.info(DOMAIN_NUMBER, TAG, `router info: ${params.info}`); + } + // 获取router事件中传递的message参数 + if (params.message === 'router message') { + // 执行业务逻辑 + hilog.info(DOMAIN_NUMBER, TAG, `router message: ${params.message}`); + } } } }; @@ -655,6 +653,10 @@ export default class EntryFormAbility extends FormExtensionAbility { ```ts import FormExtension from '@ohos.app.form.FormExtensionAbility'; + import hilog from '@ohos.hilog'; + + const TAG: string = 'FormAbility'; + const DOMAIN_NUMBER: number = 0xFF00; export default class FormAbility extends FormExtension { onFormEvent(formId: string, message: string): void { @@ -663,7 +665,7 @@ export default class EntryFormAbility extends FormExtensionAbility { // 获取message事件中传递的detail参数 let msg: Record = JSON.parse(message); if (msg.detail === 'message detail') { - // do something + // 执行业务逻辑 hilog.info(DOMAIN_NUMBER, TAG, 'message info:' + msg.detail); } } diff --git a/zh-cn/application-dev/reference/apis/Readme-CN.md b/zh-cn/application-dev/reference/apis/Readme-CN.md index 38c65236190be57e772548b826215fe9b86fafbe..f583d871ca815d8af8ce5ae8f6ecef008f3abaf9 100644 --- a/zh-cn/application-dev/reference/apis/Readme-CN.md +++ b/zh-cn/application-dev/reference/apis/Readme-CN.md @@ -250,6 +250,7 @@ - [@ohos.router (页面路由)](js-apis-router.md) - [@ohos.uiAppearance (用户界面外观)](js-apis-uiappearance.md) - [getContext](js-apis-getContext.md) + - [postCardAction](js-apis-postCardAction.md) - arkui - [BuilderNode](js-apis-arkui-builderNode.md) - [FrameNode](js-apis-arkui-frameNode.md) diff --git a/zh-cn/application-dev/reference/apis/js-apis-postCardAction.md b/zh-cn/application-dev/reference/apis/js-apis-postCardAction.md new file mode 100644 index 0000000000000000000000000000000000000000..cac9b94a364d8ac53fbbac625473b38f85bf456a --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-postCardAction.md @@ -0,0 +1,67 @@ +## postCardAction + +postCardAction(component: Object, action: Object): void + +用于卡片内部和提供方应用间的交互,当前支持router、message和call三种类型的事件,仅在卡片中可以调用。 + +> **说明:** +> 本接口从API version 9开始支持。 + +**系统能力:** SystemCapability.ArkUI.ArkUI.Full + +**参数:** + + +| **参数名** | **类型** | **必填** | **说明** | +| -------- | -------- | -------- | -------- | +| component | Object | 是 | 当前自定义组件的实例,通常传入this。 | +| action | Object | 是 | action的具体描述,详情见下表。 | + + +action参数说明: + + +| **参数名** | **类型** | **取值说明** | +| -------- | -------- | -------- | +| action | string | action的类型,支持三种预定义的类型:
- router:跳转到提供方应用的指定UIAbility。
- message:自定义消息,触发后会调用提供方FormExtensionAbility的[onFormEvent()](../apis/js-apis-app-form-formExtensionAbility.md#onformevent)生命周期回调。
- call:后台启动提供方应用。触发后会拉起提供方应用的指定UIAbility(仅支持launchType为singleton的[UIAbility](../../application-models/uiability-launch-type.md),即启动模式为单实例的UIAbility),但不会调度到前台。提供方应用需要具备后台运行权限([ohos.permission.KEEP_BACKGROUND_RUNNING](../../security/AccessToken/permissions-for-all.md#ohospermissionkeep_background_running))。 | +| bundleName | string | action为router / call 类型时跳转的包名,可选。 | +| moduleName | string | action为router / call" 类型时跳转的模块名,可选。 | +| abilityName | string | action为router / call 类型时跳转的UIAbility名,必填。 | +| params | Object | 当前action携带的额外参数,内容使用JSON格式的键值对形式。必填。 | + +>![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> +>"action"为"call" 类型时,"params"需填入参数'method',且类型需为string类型,用于触发UIAbility中对应的方法。 + +**示例:** + +```ts +Button('跳转') + .width('40%') + .height('20%') + .onClick(() => { + postCardAction(this, { + action: 'router', + bundleName: 'com.example.myapplication', + abilityName: 'EntryAbility', + params: { + message: 'testForRouter' // 自定义要发送的message + } + }); + }) + +Button('拉至后台') + .width('40%') + .height('20%') + .onClick(() => { + postCardAction(this, { + action: 'call', + bundleName: 'com.example.myapplication', + abilityName: 'EntryAbility', + params: { + method: 'fun', // 自定义调用的方法名,必填 + message: 'testForCall' // 自定义要发送的message + } + }); + }) +```