diff --git a/FormDemoFA/entry/src/main/ets/Logger.ts b/FormDemoFA/entry/src/main/ets/Logger.ts index b021c0af047f0ffa05d57946802a99f556c79280..ee1c3c57afbfa37a51017b4fe380f41305bc57c5 100644 --- a/FormDemoFA/entry/src/main/ets/Logger.ts +++ b/FormDemoFA/entry/src/main/ets/Logger.ts @@ -15,7 +15,7 @@ import hilog from '@ohos.hilog'; -const LOGTAG : string = "DON_TALK" +const LOGTAG : string = "DT_FormDemoFA" class Logger { constructor() {} @@ -26,7 +26,6 @@ class Logger { public debug(...args: any[]) { hilog.debug(0x0000,LOGTAG,' %s',args.join('')) - } public warn(...args: any[]) { diff --git a/FormDemoFA/entry/src/main/ets/MainAbility/pages/index.ets b/FormDemoFA/entry/src/main/ets/MainAbility/pages/index.ets index d6ca48cf43988cd6f270a026f0c1a88b7bc57123..d1c9220af33ad8667233f93aba8a4873e0b1abcd 100644 --- a/FormDemoFA/entry/src/main/ets/MainAbility/pages/index.ets +++ b/FormDemoFA/entry/src/main/ets/MainAbility/pages/index.ets @@ -1,7 +1,7 @@ @Entry @Component struct Index { - @State message: string = 'Hello World' + @State message: string = 'Hello Form Of FA Model' build() { Row() { diff --git a/FormDemoFA/entry/src/main/js/widget/pages/index/index.css b/FormDemoFA/entry/src/main/js/widget/pages/index/index.css index 93804e81d4266b9df11b0524be7f9c3c9199371f..edf08aaa63fba45c1707af9c5e83791848b90af0 100644 --- a/FormDemoFA/entry/src/main/js/widget/pages/index/index.css +++ b/FormDemoFA/entry/src/main/js/widget/pages/index/index.css @@ -21,9 +21,9 @@ } .title { - font-size: 17fp; + font-size: 15fp; font-weight: bold; - color: black; + color: whitesmoke; text-overflow: ellipsis; max-lines: 1; margin-bottom: 10%; diff --git a/FormDemoFA/entry/src/main/js/widget/pages/index/index.hml b/FormDemoFA/entry/src/main/js/widget/pages/index/index.hml index 0d9d1ba0f23e7af049861146cd57d6afd34eab10..572a0482aa4fbe8ddd39786dc16850a2cb4827fb 100644 --- a/FormDemoFA/entry/src/main/js/widget/pages/index/index.hml +++ b/FormDemoFA/entry/src/main/js/widget/pages/index/index.hml @@ -1,12 +1,13 @@
+ FA model card {{ $t('strings.temperature') }}{{temperature}} ℃ {{ $t('strings.time') }} {{time}} - - - + 手动更新 + 开启持续刷新 + 关闭持续刷新
\ No newline at end of file diff --git a/FormDemoFA/entry/src/main/resources/base/element/string.json b/FormDemoFA/entry/src/main/resources/base/element/string.json index ec1c10409aa7f0005cb71427316a4b6b055b5076..5d65a94e376e5d24a706d85e2b6c6697a993642d 100644 --- a/FormDemoFA/entry/src/main/resources/base/element/string.json +++ b/FormDemoFA/entry/src/main/resources/base/element/string.json @@ -10,7 +10,7 @@ }, { "name": "MainAbility_label", - "value": "FormFA" + "value": "FormDemoFA" }, { "name": "form_FormAbility_desc", diff --git a/FormExtAbility/build-profile.json5 b/FormExtAbility/build-profile.json5 index 0cc5c856df497c85f756e379e24ec2a5de8cb5ba..74fb023cfc9a1202e53ad2a5376a2200fa400eee 100644 --- a/FormExtAbility/build-profile.json5 +++ b/FormExtAbility/build-profile.json5 @@ -5,9 +5,9 @@ "name": "default", "material": { "certpath": "C:\\Users\\dwx1140490\\.ohos\\config\\openharmony\\auto_ohos.cer", - "storePassword": "00000018E6A239278CEDE269F3233D751C970F7C478C5BE3B20DDC69AB981537FB3A2A9AC8BA7E8D", + "storePassword": "000000184881496A4ED69AD2366EC4BD0D48F9BC8E4CC1532C320621F4DC843C2E173C2CB3491D5F", "keyAlias": "debugKey", - "keyPassword": "00000018344AD7FA0D2FAAABD6136F0BF458E251613CE69C7BA13B017A92DA1875D341266EE07E95", + "keyPassword": "0000001845D2277DE162DC26114893CB5DA89C832916EB69C5E14341059220A4C5B79178D1B21E0B", "profile": "C:\\Users\\dwx1140490\\.ohos\\config\\openharmony\\auto_ohos_default_ohos.samples.FormApplication.p7b", "signAlg": "SHA256withECDSA", "storeFile": "C:\\Users\\dwx1140490\\.ohos\\config\\openharmony\\auto_ohos.p12" diff --git a/FormExtAbility/entry/package.json b/FormExtAbility/entry/package.json index dfa2726ff1c9ad35dcbf24c5feb7928630b5c6d2..d14f22eb794bfc1f8c9993b30d9f4e0d0dba2f8a 100644 --- a/FormExtAbility/entry/package.json +++ b/FormExtAbility/entry/package.json @@ -1,11 +1,11 @@ { - "devDependencies": {}, - "name": "entry", - "ohos": { - "org": "huawei", - "directoryLevel": "module", - "buildTool": "hvigor" + "devDependencies":{}, + "name":"entry", + "ohos":{ + "org":"huawei", + "directoryLevel":"module", + "buildTool":"hvigor" }, - "version": "1.0.0", - "dependencies": {} -} + "version":"1.0.0", + "dependencies":{} +} \ No newline at end of file diff --git a/FormExtAbility/entry/src/main/ets/Application/AbilityStage.ts b/FormExtAbility/entry/src/main/ets/Application/AbilityStage.ts index 2504b97755c185a49eb93b650462858183194f1a..f2002b3951540e3782167dac0c0d98aea990ae98 100644 --- a/FormExtAbility/entry/src/main/ets/Application/AbilityStage.ts +++ b/FormExtAbility/entry/src/main/ets/Application/AbilityStage.ts @@ -18,6 +18,6 @@ import Logger from '../model/Logger'; export default class MyAbilityStage extends AbilityStage { onCreate() { - Logger.log("[Demo] MyAbilityStage onCreate") + Logger.info("[Demo] MyAbilityStage onCreate") } } \ No newline at end of file diff --git a/FormExtAbility/entry/src/main/ets/FormAbility/FormAbility.ts b/FormExtAbility/entry/src/main/ets/FormAbility/FormAbility.ts index bef675c84cd5fd48fe9aa2bf684381cb5277db44..4309f10c2ab3eb117d43237c8fedff58a273e9ac 100644 --- a/FormExtAbility/entry/src/main/ets/FormAbility/FormAbility.ts +++ b/FormExtAbility/entry/src/main/ets/FormAbility/FormAbility.ts @@ -63,7 +63,7 @@ async function storeFormInfo(formId: string, formName: string, tempFlag: boolean const storage = await dataStorage.getStorage(DATA_STORAGE_PATH); // put form info await storage.put(formId, JSON.stringify(formInfo)); - Logger.log(`storeFormInfo, put form info successfully, formId: ${formId}`); + Logger.info(`storeFormInfo, put form info successfully, formId: ${formId}`); await storage.flush(); } catch (err) { Logger.error(`failed to storeFormInfo, err: ${JSON.stringify(err)}`); @@ -80,17 +80,17 @@ async function updateTempFormInfo(formId: string) { const storage = await dataStorage.getStorage(DATA_STORAGE_PATH); // get form info const data = await storage.get(formId, JSON.stringify(formInfoDefault)); - Logger.log(`updateTempFormInfo, get form info successfully, formId: ${formId}`); + Logger.info(`updateTempFormInfo, get form info successfully, formId: ${formId}`); const formInfo = JSON.parse(data.toString()); if (!formInfo.tempFlag) { - Logger.log(`updateTempFormInfo, formId: ${formId} is not temporary.`); + Logger.info(`updateTempFormInfo, formId: ${formId} is not temporary.`); return; } formInfo.tempFlag = false; // update form info await storage.put(formId, JSON.stringify(formInfo)); - Logger.log(`updateTempFormInfo, update form info successfully, formId: ${formId}`); + Logger.info(`updateTempFormInfo, update form info successfully, formId: ${formId}`); await storage.flush(); } catch (err) { Logger.error(`failed to updateTempFormInfo, err: ${JSON.stringify(err)}`); @@ -107,7 +107,7 @@ async function updateForm(formId: string) { const storage = await dataStorage.getStorage(DATA_STORAGE_PATH); // get form info const data = await storage.get(formId, JSON.stringify(formInfoDefault)); - Logger.log(`updateForm, get form info successfully, formId: ${formId}`); + Logger.info(`updateForm, get form info successfully, formId: ${formId}`); const formInfo = JSON.parse(data.toString()); formInfo.updateCount = formInfo.updateCount + 1; @@ -122,7 +122,7 @@ async function updateForm(formId: string) { // update form info await storage.put(formId, JSON.stringify(formInfo)); - Logger.log(`updateForm, update form info successfully, formId: ${formId}`); + Logger.info(`updateForm, update form info successfully, formId: ${formId}`); await storage.flush(); } catch (err) { Logger.error(`failed to updateForm, err: ${JSON.stringify(err)}`); @@ -135,7 +135,7 @@ async function deleteFormInfo(formId: string) { const storage = await dataStorage.getStorage(DATA_STORAGE_PATH); // del form info await storage.delete(formId); - Logger.log(`deleteFormInfo, del form info successfully, formId: ${formId}`); + Logger.info(`deleteFormInfo, del form info successfully, formId: ${formId}`); await storage.flush(); } catch (err) { Logger.error(`failed to deleteFormInfo, err: ${JSON.stringify(err)}`); @@ -144,7 +144,7 @@ async function deleteFormInfo(formId: string) { export default class FormAbility extends FormExtension { onCreate(want) { - Logger.log(`FormAbility onCreate, want: ${JSON.stringify(want)}`); + Logger.info(`FormAbility onCreate, want: ${JSON.stringify(want)}`); // get form info let formId = want.parameters[FORM_PARAM_IDENTITY_KEY]; @@ -161,21 +161,22 @@ export default class FormAbility extends FormExtension { } onCastToNormal(formId) { - Logger.log(`FormAbility onCastToNormal, formId: ${formId}`); + Logger.info(`FormAbility onCastToNormal, formId: ${formId}`); updateTempFormInfo(formId); } onUpdate(formId) { - Logger.log(`FormAbility onUpdate, formId: ${formId}`); + Logger.info(`FormAbility onUpdate, formId: ${formId}`); updateForm(formId); } onVisibilityChange(newStatus) { - Logger.log(`FormAbility onVisibilityChange`); + Logger.info(`FormAbility onVisibilityChange : ${newStatus}`); +// this.context.updateForm() } onEvent(formId, message) { - Logger.log(`FormAbility onEvent, formId = ${formId}, message: ${JSON.stringify(message)}`); + Logger.info(`FormAbility onEvent, formId = ${formId}, message: ${JSON.stringify(message)}`); let jsonParams = JSON.parse(message) let eventName = jsonParams.params.name @@ -185,34 +186,41 @@ export default class FormAbility extends FormExtension { this.onUpdate(formId) break; case "openRefresh" : - Logger.log("openRefresh started ") + Logger.info("openRefresh started ") let count = 1 timer = setInterval(()=>{ - Logger.log("231--- count : " + count++) + Logger.info("231--- count : " + count++) this.onUpdate(formId) },1000) - Logger.log("openRefresh end timer : " + timer) + Logger.info("openRefresh end timer : " + timer) break; case "closeRefresh" : - Logger.log("closeRefresh started : " + timer) + Logger.info("closeRefresh started : " + timer) clearInterval(timer) - Logger.log("closeRefresh end timer : " + timer) + Logger.info("closeRefresh end timer : " + timer) + break; + case "setNextRefreshTime" : + Logger.info("setNextRefreshTime start ") + formProvider.setFormNextRefreshTime(formId,5,err => { + Logger.error("setFormNextRefreshTime err : " + JSON.stringify(err)) + }) + Logger.info("setNextRefreshTime end ") break; default : - Logger.log("(onEvent) formId :" + formId + " message : " + message ) + Logger.info("(onEvent) formId :" + formId + " message : " + message ) break; } } onDestroy(formId) { - Logger.log(`FormAbility onDestroy, formId = ${formId}`); + Logger.info(`FormAbility onDestroy, formId = ${formId}`); deleteFormInfo(formId); // clearTimeout(timeout) } onAcquireFormState(want) { - Logger.log(`FormAbility onAcquireFormState`); + Logger.info(`FormAbility onAcquireFormState`); return formInfo.FormState.READY; } }; \ No newline at end of file diff --git a/FormExtAbility/entry/src/main/ets/MainAbility/MainAbility.ts b/FormExtAbility/entry/src/main/ets/MainAbility/MainAbility.ts index bfcce5d8efa33692ea68b1d7690405d4396ac7a9..ceb978d2dad600ed0971598246220f83744ea6fd 100644 --- a/FormExtAbility/entry/src/main/ets/MainAbility/MainAbility.ts +++ b/FormExtAbility/entry/src/main/ets/MainAbility/MainAbility.ts @@ -18,33 +18,35 @@ import Logger from '../model/Logger'; export default class MainAbility extends Ability { onCreate(want, launchParam) { - Logger.log("[Demo] MainAbility onCreate") + Logger.info("[Demo] MainAbility onCreate") globalThis.abilityWant = want; + Logger.error("MainAbility onCreate want : " + JSON.stringify(want)) + } onDestroy() { - Logger.log("[Demo] MainAbility onDestroy") + Logger.info("[Demo] MainAbility onDestroy") } onWindowStageCreate(windowStage) { // Main window is created, set main page for this ability - Logger.log("[Demo] MainAbility onWindowStageCreate") + Logger.info("[Demo] MainAbility onWindowStageCreate") windowStage.setUIContent(this.context, "pages/index", null) } onWindowStageDestroy() { // Main window is destroyed, release UI related resources - Logger.log("[Demo] MainAbility onWindowStageDestroy") + Logger.info("[Demo] MainAbility onWindowStageDestroy") } onForeground() { // Ability has brought to foreground - Logger.log("[Demo] MainAbility onForeground") + Logger.info("[Demo] MainAbility onForeground") } onBackground() { // Ability has back to background - Logger.log("[Demo] MainAbility onBackground") + Logger.info("[Demo] MainAbility onBackground") } }; diff --git a/FormExtAbility/entry/src/main/ets/model/Logger.ts b/FormExtAbility/entry/src/main/ets/model/Logger.ts index 3a2384ae9b83b43f67f801941a89322fe30c021d..c5d5f4b3dc5f0dbccb793ec3cba80b13ec17790b 100644 --- a/FormExtAbility/entry/src/main/ets/model/Logger.ts +++ b/FormExtAbility/entry/src/main/ets/model/Logger.ts @@ -13,23 +13,29 @@ * limitations under the License. */ +import hilog from '@ohos.hilog'; + +const LOGTAG : string = "DT_FormExtAbility" + class Logger { - constructor(private prefix: string) {} - public log(...args: any[]) { - console.log(`[${this.prefix}]: ${args.join('')}`) - } + constructor() {} + public info(...args: any[]) { - console.info(`[${this.prefix}]: ${args.join('')}`) + hilog.info(0x0000,LOGTAG,' %s',args.join('')) } + public debug(...args: any[]) { - console.debug(`[${this.prefix}]: ${args.join('')}`) + hilog.debug(0x0000,LOGTAG,' %s',args.join('')) + } + public warn(...args: any[]) { - console.warn(`[${this.prefix}]: ${args.join('')}`) + hilog.warn(0x0000,LOGTAG,' %s',args.join('')) } + public error(...args: any[]) { - console.error(`[${this.prefix}]: ${args.join('')}`) + hilog.error(0x0000,LOGTAG,' %s',args.join('')) } } -export default new Logger('eTSFormExtAbilityTag') +export default new Logger() diff --git a/FormExtAbility/entry/src/main/ets/pages/index.ets b/FormExtAbility/entry/src/main/ets/pages/index.ets index b7a5f81d4bf477a3f888757e6ded027378605b73..106aafe55de377a0f5d75dde7e5c7687a3a08bef 100644 --- a/FormExtAbility/entry/src/main/ets/pages/index.ets +++ b/FormExtAbility/entry/src/main/ets/pages/index.ets @@ -42,7 +42,8 @@ struct Index { } .type(ButtonType.Capsule) .margin({ - top: 20 + top: 20, + bottom:20 }) .backgroundColor('#0D9FFB') .width('35%') diff --git a/FormExtAbility/entry/src/main/js/widget/pages/index/index.css b/FormExtAbility/entry/src/main/js/widget/pages/index/index.css index 93804e81d4266b9df11b0524be7f9c3c9199371f..8476fb05b6ba018380cd467ddc9f452b29f6136a 100644 --- a/FormExtAbility/entry/src/main/js/widget/pages/index/index.css +++ b/FormExtAbility/entry/src/main/js/widget/pages/index/index.css @@ -15,7 +15,7 @@ align-items: flex-start; width: 100%; height: 100%; - padding: 12px; + padding: 30px; background-size: cover; background-image: url("/common/landscape.jpg"); } @@ -23,7 +23,7 @@ .title { font-size: 17fp; font-weight: bold; - color: black; + color: whitesmoke; text-overflow: ellipsis; max-lines: 1; margin-bottom: 10%; diff --git a/FormExtAbility/entry/src/main/js/widget/pages/index/index.hml b/FormExtAbility/entry/src/main/js/widget/pages/index/index.hml index 0d9d1ba0f23e7af049861146cd57d6afd34eab10..191559e017737df2be450a6eb5e87cfca331acf6 100644 --- a/FormExtAbility/entry/src/main/js/widget/pages/index/index.hml +++ b/FormExtAbility/entry/src/main/js/widget/pages/index/index.hml @@ -4,9 +4,10 @@ {{ $t('strings.temperature') }}{{temperature}} ℃ {{ $t('strings.time') }} {{time}} - - - + 手动更新 + 开启持续刷新 + 关闭持续刷新 + 手动设置下次更新时间 \ No newline at end of file diff --git a/FormExtAbility/entry/src/main/js/widget/pages/index/index.json b/FormExtAbility/entry/src/main/js/widget/pages/index/index.json index 8a39dbba17a2c39cedc6543f2cc83b14a583ddf1..1c2cb4030fbd81e18ee4fb7bf878c1c2d4c35962 100644 --- a/FormExtAbility/entry/src/main/js/widget/pages/index/index.json +++ b/FormExtAbility/entry/src/main/js/widget/pages/index/index.json @@ -6,9 +6,11 @@ "actions": { "routerPage": { "action": "router", + "bundleName": "ohos.samples.FormApplication", "abilityName": "ohos.samples.FormApplication.MainAbility", "params": { - "message": "add detail" + "message": "add detail", + "param1" : "test param1 " } }, "routerPageOne": { @@ -37,6 +39,12 @@ "params": { "name" : "closeRefresh" } + }, + "setNextRefreshTime": { + "action": "message", + "params": { + "name": "setNextRefreshTime" + } } } } \ No newline at end of file diff --git a/FormExtAbility/entry/src/main/module.json5 b/FormExtAbility/entry/src/main/module.json5 index 42fbea65b00459d3d417483f8b960453bac3e111..151883bfcb7166a99d18e20ab21411bf04a04cd6 100644 --- a/FormExtAbility/entry/src/main/module.json5 +++ b/FormExtAbility/entry/src/main/module.json5 @@ -9,6 +9,14 @@ "phone", "tablet", ], + "requestPermissions": [ + { + "name": "ohos.permission.REQUIRE_FORM" + }, + { + "name": "ohos.permission.GET_BUNDLE_INFO_PRIVILEGED" + } + ], "deliveryWithInstall": true, "installationFree": false, "pages": "$profile:main_pages", diff --git a/FormExtAbility/package.json b/FormExtAbility/package.json index 2a18fb66eb7b51a84e3a35b0e2e4c533749ec09a..8649b9c7c2c1f45bdc0e54c29b54bf770c2942db 100644 --- a/FormExtAbility/package.json +++ b/FormExtAbility/package.json @@ -1,14 +1,14 @@ { - "devDependencies": {}, - "name": "formapplication", - "ohos": { - "org": "huawei", - "directoryLevel": "project", - "buildTool": "hvigor" + "devDependencies":{}, + "name":"formapplication", + "ohos":{ + "org":"huawei", + "directoryLevel":"project", + "buildTool":"hvigor" }, - "version": "1.0.0", - "dependencies": { - "@ohos/hvigor-ohos-plugin": "1.0.6", - "@ohos/hvigor": "1.0.6" + "version":"1.0.0", + "dependencies":{ + "@ohos/hvigor-ohos-plugin":"1.0.6", + "@ohos/hvigor":"1.0.6" } -} +} \ No newline at end of file diff --git "a/Stage\346\250\241\345\236\213\344\270\255\345\215\241\347\211\207\347\232\204\345\237\272\346\234\254\347\224\250\346\263\225.md" "b/Stage\346\250\241\345\236\213\344\270\255\345\215\241\347\211\207\347\232\204\345\237\272\346\234\254\347\224\250\346\263\225.md" index 01901d37055d0feeb83a9cf2a3e59bd8cddfa258..dbfc5827c334376b86328842bba72334ba588b3c 100644 --- "a/Stage\346\250\241\345\236\213\344\270\255\345\215\241\347\211\207\347\232\204\345\237\272\346\234\254\347\224\250\346\263\225.md" +++ "b/Stage\346\250\241\345\236\213\344\270\255\345\215\241\347\211\207\347\232\204\345\237\272\346\234\254\347\224\250\346\263\225.md" @@ -66,12 +66,12 @@ FormExtension类还拥有成员context ,为FormExtensionContext类。 > 卡片提供者,可以更新卡片信息、设置卡片下一次刷新时间。 -| 接口名 | 描述 | -| ------------------------------------------------------------ | ------------------------------------------------- | -| setFormNextRefreshTime(formId: string, minute: number, callback: AsyncCallback): void; | 设置指定卡片的下一次更新时间。 | -| setFormNextRefreshTime(formId: string, minute: number): Promise; | 设置指定卡片的下一次更新时间,以promise方式返回。 | -| updateForm(formId: string, formBindingData: FormBindingData, callback: AsyncCallback): void; | 更新指定的卡片。 | -| updateForm(formId: string, formBindingData: FormBindingData): Promise; | 更新指定的卡片,以promise方式返回。 | +| 接口名 | 描述 | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| setFormNextRefreshTime(formId: string, minute: number, callback: AsyncCallback): void; | 设置指定卡片的下一次更新时间,参数minute表示过多少分钟更新卡片,最低为5分钟。 | +| setFormNextRefreshTime(formId: string, minute: number): Promise; | 设置指定卡片的下一次更新时间,以promise方式返回。 | +| updateForm(formId: string, formBindingData: FormBindingData, callback: AsyncCallback): void; | 更新指定的卡片。 | +| updateForm(formId: string, formBindingData: FormBindingData): Promise; | 更新指定的卡片,以promise方式返回。 | @@ -265,6 +265,7 @@ FormExtension类还拥有成员context ,为FormExtensionContext类。 } ``` + 跳转事件底层是拉起Ability,且只能拉起本应用的Ability,在拉起的Ability的onCreate生命周期函数中,会传入一个want参数,action中包含的params会包含在拉起Ability的want中。 @@ -422,6 +423,8 @@ FormExtension类还拥有成员context ,为FormExtensionContext类。 #### 定时刷新数据 +##### 方式一:通过配置文件,配置定时刷新数据 + 在卡片配置文件`form_config.json`中可以配置来实现卡片定时刷新数据, `updateDuration`属性表示卡片定时刷新的更新周期,单位为30分钟,取值为自然数(正整数或0)。 @@ -461,7 +464,21 @@ FormExtension类还拥有成员context ,为FormExtensionContext类。 } ``` - + + +##### 方式二:通过FormProvider 接口,设置过多少分钟刷新一次。 + +> 最少设置为过5分钟刷新一次 + +```typescript +import formProvider from '@ohos.application.formProvider'; + +formProvider.setFormNextRefreshTime(formId,5,err => { + Logger.error("setFormNextRefreshTime err : " + JSON.stringify(err)) + }) +``` + + ### 卡片信息持久化