diff --git a/README.md b/README.md index d4c73ad90d7891420e42bbbe14d4f6f86aef4b48..7fd5acc2b04f6de4b63b391835270e5b6d37ba1d 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,9 @@ ## 效果预览 - +| 新增 | 删除 | 编辑 | 查询 | +|:-------------------------------------------------------------:|:-------------------------------------------------------------:|:--------------------------------------------------------------:|:---------------------------------------------------------------:| +| | | | | ## 使用说明 @@ -45,12 +47,20 @@ │ └──ContactViewModel.ets // 通讯录model └──entry/src/main/resources // 资源文件 ``` -## 相关概念 -- 应用数据持久化概述:应用数据持久化,是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象,存储介质上的数据形态可能是文本、数据库、二进制文件等。 -- 键值型数据库:键值型数据库存储键值对形式的数据,当需要存储的数据没有复杂的关系模型,比如存储商品名称及对应价格、员工工号及今日是否已出勤等,由于数据复杂度低,更容易兼容不同数据库版本和设备类型,因此推荐使用键值型数据库持久化此类数据。 -- @ohos.data.distributedKVStore (分布式键值数据库) - :分布式键值数据库为应用程序提供不同设备间数据库的分布式协同能力。通过调用分布式键值数据库各个接口,应用程序可将数据保存到分布式键值数据库中,并可对分布式键值数据库中的数据进行增加、删除、修改、查询等操作。 +## 具体实现 + +1. 封装设备管理类,调用设备管理能力[distributedDeviceManager.createDeviceManager()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributeddevicemanager#distributeddevicemanagercreatedevicemanager)创建一个设备管理实例,设备管理实例是分布式设备管理方法的调用入口,用于获取可信设备和本地设备的相关信息。 +2. 通过设备管理实例DeviceManager的[on('deviceStateChange')](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributeddevicemanager#ondevicestatechange)事件注册设备状态回调,以便在设备状态发生变化时及时通知应用组网内可信设备的变化,并注册设备状态变化回调函数,根据返回的设备状态data.action执行不同方法更新设备列表。 +3. 通过设备管理实例DeviceManager的[on('discoverSuccess')](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributeddevicemanager#ondiscoversuccess)事件注册设备状态回调,以便在发现时及时通知应用组网内设备的变化,调用[startDiscovering()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributeddevicemanager#startdiscovering)发现周围设备。 +4. 若设备在信任设备列表,执行[startAbility()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-inner-application-uiabilitycontext#startability)方法启动连接设备上的应用,将当前的设备信息作为参数发送至连接设备。若设备不是信任设备,执行[bindTarget()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributeddevicemanager#bindtarget)方法启动验证。此时连接设备提示是否接受,接收连接后连接设备展示PIN码,本地设备输入PIN码确认后连接成功。再次点击查询设备按钮,选择已连接设备,点击确认启动连接设备上的应用。 +5. 关闭设备弹窗时,调用[stopDiscovering()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributeddevicemanager#stopdiscovering)停止发现周边设备,并通过设备管理实例DeviceManager的[off('deviceStateChange')](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributeddevicemanager#offdevicestatechange)和[off('discoverSuccess')](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributeddevicemanager#offdiscoversuccess)事件注销设备监听任务。 +6. 应用首次启动时,调用[requestPermissionsFromUser()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-abilityaccessctrl#requestpermissionsfromuser9)方法动态弹窗获取授权。 +7. 创建键值型数据库对象实例,调用[distributedKVStore.createKVManager()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributedkvstore#distributedkvstorecreatekvmanager)创建一个KVManager对象实例,用于管理数据库对象,调用KVManager的[getKVStore()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributedkvstore#getkvstore)方法,创建并获取分布式键值数据库。 +8. 调用[on('dataChange')](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributedkvstore#ondatachange)接口订阅组网内其他设备的数据变化,并注册数据变化回调函数。 +9. 封装操作数据库的增([put()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributedkvstore#put))、删([delete()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributedkvstore#delete)、[deleteBatch()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributedkvstore#deletebatch))、改([put()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributedkvstore#put))、查([get()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributedkvstore#get)、[getEntries()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributedkvstore#getentries))六个方法。 +10. 调用同步数据的接口[sync()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributedkvstore#sync)推送当前设备数据变化至组网内其他设备。 +11. 当组网内其他设备数据发生变化时,执行回调函数,通过自定义getAllData()方法获取发生数据变化设备的全部数据,更新本地数据。 ## 相关权限 @@ -63,5 +73,5 @@ 3. DevEco Studio版本:DevEco Studio 5.1.1 Release及以上。 4. HarmonyOS SDK版本:HarmonyOS 5.1.1 Release SDK及以上。 5. 双端设备需要登录同一华为账号,建议打开查找设备功能。 -6. 双端设备需要打开Wi-Fi和蓝牙开关。 +6. 双端设备需要打开Wi-Fi和蓝牙开关,条件允许时,建议连接同一局域网。 7. 双端设备都需要有该应用。 diff --git a/entry/src/main/ets/pages/ContactAddAndEditPage.ets b/entry/src/main/ets/pages/ContactAddAndEditPage.ets index 84f0fb7cf93baeeb7f92e438ada4f16d9af679a0..8000aed5be1e1a4035537ffc388e152f598df051 100644 --- a/entry/src/main/ets/pages/ContactAddAndEditPage.ets +++ b/entry/src/main/ets/pages/ContactAddAndEditPage.ets @@ -141,7 +141,17 @@ struct ContactAddAndEditPage { .borderRadius(40) .margin({ right: 8 }) .onClick(() => { - this.getUIContext().getRouter().back(); + if (!this.isEdit) { + this.getUIContext().getRouter().back() + } else { + let params = this.getUIContext().getRouter().getParams() as Record; + this.getUIContext().getRouter().back({ + url: CommonConstants.PAGE_DETAIL_URL, + params: { + key: params.key + } + }) + } }) Text(this.isEdit ? $r('app.string.edit_title') : $r('app.string.add_contacts_text')) diff --git a/screenshots/devices/contact.gif b/screenshots/devices/contact.gif deleted file mode 100644 index c397a829dd85655829c4dfe4d1c23851784b2ddb..0000000000000000000000000000000000000000 Binary files a/screenshots/devices/contact.gif and /dev/null differ diff --git a/screenshots/devices/contactAdd.gif b/screenshots/devices/contactAdd.gif new file mode 100644 index 0000000000000000000000000000000000000000..2385241fb25fee1f97a990a7790bc6b6b8f53298 Binary files /dev/null and b/screenshots/devices/contactAdd.gif differ diff --git a/screenshots/devices/contactDel.gif b/screenshots/devices/contactDel.gif new file mode 100644 index 0000000000000000000000000000000000000000..441c31e5d2879e3443d5214a7e6f6252e87f149b Binary files /dev/null and b/screenshots/devices/contactDel.gif differ diff --git a/screenshots/devices/contactEdit.gif b/screenshots/devices/contactEdit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c36cc37310fdc54a5692e4a186325710c17d949e Binary files /dev/null and b/screenshots/devices/contactEdit.gif differ diff --git a/screenshots/devices/contactQuery.gif b/screenshots/devices/contactQuery.gif new file mode 100644 index 0000000000000000000000000000000000000000..e54748937a093c5af53e6c2dbad465e6663377b4 Binary files /dev/null and b/screenshots/devices/contactQuery.gif differ diff --git a/screenshots/devices/contact_sync.gif b/screenshots/devices/contact_sync.gif deleted file mode 100644 index 3fd0ffd7182fa269d11b240ec1d9dedb59a1e790..0000000000000000000000000000000000000000 Binary files a/screenshots/devices/contact_sync.gif and /dev/null differ