HarmonyOS鸿蒙Next中FA卡片编辑Ability(formConfigAbility)如何获取卡片信息
HarmonyOS鸿蒙Next中FA卡片编辑Ability(formConfigAbility)如何获取卡片信息 目前我使用的方法是用getWant获取
want.parameters["ohos.extra.param.key.form_identity"]
中的formId信息
但在真机上运行的时候,我发现我的手机获取的formId总是和打开编辑的卡片formId不一致,而在平板就是正常的,这是Bug吗?
不止打开formConfigAbility,用want打开MainAbility也是一样的效果,我应该用什么其他方法获取卡片信息?
出问题的手机是P40 Pro(3.0.0.205(C00E191R3P6)),没问题的平板是MatePad Pro 11 (3.0.0.185(C00E180R5P1patch01))
更多关于HarmonyOS鸿蒙Next中FA卡片编辑Ability(formConfigAbility)如何获取卡片信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html
文件结构如下:
都是默认生成的文件,我在其中修改的代码有:
form.ts
import formBindingData from '@ohos.application.formBindingData';
import formInfo from '@ohos.application.formInfo';
export default {
onCreate(want) {
// Called to return a FormBindingData object.
console.log('Form.ts: ' + JSON.stringify(want))
let formData = {};
return formBindingData.createFormBindingData(formData);
},
onCastToNormal(formId) {
// Called when the form provider is notified that a temporary form is successfully
// converted to a normal form.
},
onUpdate(formId) {
// Called to notify the form provider to update a specified form.
},
onVisibilityChange(newStatus) {
// Called when the form provider receives form events from the system.
},
onEvent(formId, message) {
// Called when a specified message event defined by the form provider is triggered.
},
onDestroy(formId) {
// Called to notify the form provider that a specified form has been destroyed.
},
onAcquireFormState(want) {
// Called to return a {@link FormState} object.
return formInfo.FormState.READY;
}
};
index.json
{
"data": {
"title": "Hello World"
},
"actions": {
"routerEvent": {
"action": "router",
"abilityName": "com.biandangroup.myapplication.MainAbility",
"params": {
"message": "add detail"
}
}
}
}
MainAbility/app.ets
import featureAbility from '@ohos.ability.featureAbility';
import hilog from '@ohos.hilog';
export default {
onCreate() {
featureAbility.getWant((err, want) => {
console.log('Form err: ' + JSON.stringify(err))
console.log('Form want: ' + JSON.stringify(want))
})
hilog.info(0x0000, 'testTag', '%{public}s', 'Application onCreate');
},
onDestroy() {
hilog.info(0x0000, 'testTag', '%{public}s', 'Application onDestroy');
},
}
打印日志如下:
03-31 18:08:19.714 7067-7707/com.biandangroup.myapplication D 03B00/JSApp: app Log: Form.ts: {"flags":0,"parameters":{"ohos.extra.param.key.form_customize":{"empty":false,"params":{"calling_package_name":"com.huawei.android.launcher","isTempCard":true},"unpacked":true},"ohos.extra.param.key.form_dimension":2,"ohos.extra.param.key.form_id":1462230433,"ohos.extra.param.key.form_identity":"51335722621722017","ohos.extra.param.key.form_name":"widget","ohos.extra.param.key.form_temporary":false}}
03-31 18:08:29.816 7067-7999/com.biandangroup.myapplication D 03B00/JSApp: app Log: Form want: {"abilityName":"com.biandangroup.myapplication.MainAbility","bundleName":"com.biandangroup.myapplication","deviceId":"","flags":268435456,"parameters":{"ohos.extra.param.key.form_id":1462230433,"ohos.extra.param.key.form_identity":51335722621722020,"params":"{\"message\":\"add detail\"}"}}
可以看到卡片的ID变化了:51335722621722017=>51335722621722020
更多关于HarmonyOS鸿蒙Next中FA卡片编辑Ability(formConfigAbility)如何获取卡片信息的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
创建卡片的时候打印日志如下:
app Log: myFormAbility onCreate: 51335721500565875
在设置的卡片编辑Ability中打印日志如下:
Form want: {“abilityName”:“cn.biandangroup.biandan.FormSettingAbility”,“bundleName”:“cn.biandangroup.biandan”,“deviceId”:"",“flags”:0,“parameters”:{“ohos.extra.param.key.form_identity”:51335721500565870,“ohos.extra.param.key.form_name”:“todolistMiddle”}}
可以看到在创建时Id为51335721500565875的卡片在进入编辑Ability中时,传参为51335721500565870,发生了变化,但是卡片本身的Id没有变,在其他的LifecycleForm生命周期接口中打印依然是51335721500565875
楼主你好,麻烦提供下开发环境信息,api几和sdk版本和相关日志
您好,api和sdk版本都是8,相关日志我稍后回复在楼下。
楼主你好,
你的问题已经反馈给开发者,请耐心等待,
楼主,你好,麻烦提供下这部分交互的完整代码,
又换了个手机(3.0.0.205(C00E190R6P8))也是一样的问题。
在HarmonyOS鸿蒙Next中,FA卡片的formConfigAbility
可以通过FormExtensionAbility
类来获取卡片信息。具体来说,可以通过重写onCreateForm
方法来获取卡片的初始配置信息,或者通过onUpdateForm
方法来更新卡片信息。
在onCreateForm
方法中,可以通过FormBindingData
对象来设置卡片的初始数据和布局。FormBindingData
对象可以包含卡片的数据和布局信息,开发者可以通过setFormBindingData
方法将数据绑定到卡片上。
在onUpdateForm
方法中,可以通过FormState
对象来获取卡片的当前状态,并根据需要进行更新。FormState
对象包含了卡片的ID、尺寸、状态等信息,开发者可以通过这些信息来动态更新卡片的内容。
此外,FormExtensionAbility
还提供了onDeleteForm
方法,用于在卡片被删除时执行清理操作。
总结来说,formConfigAbility
通过FormExtensionAbility
类及其相关方法来获取和操作卡片信息,包括初始化、更新和删除卡片。
在HarmonyOS鸿蒙Next中,FA卡片的formConfigAbility
通过onCreate
方法获取卡片信息。具体步骤如下:
- 获取FormBindingData:在
onCreate
方法中,通过FormBindingData
对象获取卡片信息。 - 解析卡片信息:使用
FormBindingData
提供的方法解析卡片配置信息,如卡片ID、名称等。 - 处理卡片配置:根据解析的信息进行卡片配置和初始化。
示例代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FormBindingData bindingData = (FormBindingData) getIntent().getParcelableExtra(FormBindingData.EXTRA_FORM_BINDING_DATA);
if (bindingData != null) {
long formId = bindingData.getFormId();
String formName = bindingData.getFormName();
// 处理卡片配置
}
}
通过上述步骤,formConfigAbility
可以获取并处理FA卡片的信息。