HarmonyOS 鸿蒙Next中是否支持应用间数据授权访问的写入
HarmonyOS 鸿蒙Next中是否支持应用间数据授权访问的写入 是否支持应用间数据授权访问的写入,场景比如:在用户允许的前提下,允许a应用访问b应用的数据。
Share Kit(分享服务)为应用提供文本、图片、视频等内容跨应用、跨端分享能力。 参考链接: https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/tutorials_NEXT-ShareKit
更多关于HarmonyOS 鸿蒙Next中是否支持应用间数据授权访问的写入的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
跨应用数据共享 是解决应用间数据授权访问写入问题的核心方案。
其核心思想是:数据提供方(您的应用B)通过系统提供的共享框架暴露数据,数据访问方(应用A)在获得用户授权后,通过标准接口对数据进行写入操作。
方案一:通过 DataShareExtensionAbility(一对多共享)
这是最经典和灵活的方式,适用于需要复杂业务逻辑处理的场景。
-
实现原理(来自《data-share-overview.md》、《share-data-by-datashareextensionability.md》):
- 数据提供方(应用B):创建一个
DataShareExtensionAbility
子类,并重写其insert
,update
,delete
等方法,在其中实现您自己的数据写入逻辑。这相当于创建了一个专门用于数据共享的后台服务。 - 数据访问方(应用A):通过
DataShareHelper
连接到此扩展能力,然后调用insert
或update
等方法。系统会自动拉起应用B的DataShareExtensionAbility
来处理写入请求。
- 数据提供方(应用B):创建一个
-
权限控制与用户授权:
- 静态配置:在应用B的
module.json5
中,为DataShareExtensionAbility
配置writePermission
字段,声明写入数据所需的权限(例如com.example.permission.WRITE_MY_DATA
)。 - 动态申请:应用A必须在自己的
module.json5
中申请相应权限,并在运行时调用requestPermissionsFromUser
接口,弹窗让用户授权。用户允许后,应用A才能成功调用写入接口。
- 静态配置:在应用B的
-
特点:
- 优点:灵活性强,数据提供方可以完全控制数据写入的逻辑、校验和安全性。
- 缺点:每次写入操作可能会拉起提供方的扩展能力进程。
方案二:通过静默数据访问(系统应用特性,高效共享)
此方案适用于 primarily 是简单的数据库增删改查操作,希望更高效率、无需拉起提供方的场景。
-
实现原理(来自《share-data-by-silent-access.md》):
- 数据提供方(应用B):在
module.json5
的proxyData
节点中声明要共享的数据URI和访问权限(requiredWritePermission
)。同时,需要将数据库文件托管给系统数据管理服务。 - 数据访问方(应用A):在获得用户授权后,直接通过
DataShareHelper
的接口进行写入操作。数据管理服务会直接代理此操作,而不会拉起应用B。
- 数据提供方(应用B):在
-
权限控制与用户授权:
- 与应用A通过
requestPermissionsFromUser
动态申请requiredWritePermission
中定义的权限,并获得用户同意。
- 与应用A通过
-
特点:
- 优点:性能更高,延迟更低,无需拉起提供方应用。
- 缺点:主要面向系统应用,且业务逻辑处理能力有限(主要依赖数据库本身的能力)。
方案三:通过 UDMF 标准化数据通路(多对多共享)
此方案适用于更通用、更标准化的数据交换场景,例如文本、图片、文件等。
-
实现原理(来自《unified-data-channels.md》、《js-apis-data-unifiedDataChannel.md》):
- 数据提供方(应用B):并不直接暴露自己的数据库,而是将需要共享的数据封装成标准化的
UnifiedData
对象,通过unifiedDataChannel.insertData()
方法写入到系统的“公共数据通路”(如DATA_HUB
)中。 - 数据访问方(应用A):通过
unifiedDataChannel.queryData()
查询并获取到这些数据。然而,UDMF 本身更侧重于数据的暂存和交换,对“更新”已有数据的支持需结合其他权限机制。
- 数据提供方(应用B):并不直接暴露自己的数据库,而是将需要共享的数据封装成标准化的
-
结合权限管理(关键步骤,来自《js-apis-uripermissionmanager-sys.md》):
- 如果
UnifiedData
中包含文件URI(如file://...
),应用A要写入该文件,需要应用B调用grantUriPermissionByKey
系统接口,显式地授权给应用A。这个接口需要传入UDMF数据的唯一标识key
和目标应用的tokenId
。 - 授权后,应用A就获得了对该文件的写入权限,可以进行修改。
- 如果
-
特点:
- 优点:标准化程度高,适合多个应用间交换同一份数据。
- 缺点:对于更新操作,流程相对间接,需要数据提供方主动授权。
总结与选择建议
特性 | DataShareExtensionAbility | 静默数据访问 | UDMF + URI授权 |
---|---|---|---|
适用场景 | 复杂业务逻辑的数据写入 | 高效的数据库操作 | 标准化的数据与文件交换 |
是否需要拉起提供方 | 是 | 否 | 否(对于授权操作) |
权限控制 | 自定义权限,动态申请 | 自定义权限,动态申请 | 系统级URI授权 |
灵活性 | 高 | 中 | 中 |
主要文档 | data-share-overview.md |
share-data-by-silent-access.md |
unified-data-channels.md , js-apis-uripermissionmanager-sys.md |
您可以根据您的具体场景选择最合适的方案:
- 如果写入过程涉及复杂逻辑,推荐使用 方案一(DataShareExtensionAbility)。
- 如果只是简单的数据库记录操作且追求高性能,并且是系统应用,推荐使用 方案二(静默数据访问)。
- 如果共享的数据主要是文件,并且希望有一套标准的分享和授权机制,推荐使用 方案三(UDMF +
grantUriPermissionByKey
)。
所有方案都遵循 “用户允许为前提” 的原则,通过系统的统一权限管理框架来确保安全性和用户知情权。
希望HarmonyOS能加强与其他品牌设备的兼容性,让更多人受益。
跨应用数据共享
应用间配置共享通过集中管理公共配置信息,在不同应用间共享配置,提升协作效率。
从API version 20开始,支持应用间配置共享。
运作机制
应用间配置共享运作机制如下所示:
- 配置发布方(即数据提供方):负责提供默认共享配置项,并能动态修改配置项信息。当前支持静态配置和动态配置两种配置方式。
- 静态配置:应用包在安装时提供的默认共享配置项(不依赖应用启动即生效)。
- 动态配置:配置发布方通过调用相关接口可以动态新增、删除或修改配置项(不依赖应用升级)。
- 配置访问方(即数据访问方):可通过调用接口获取配置信息、或者监听/取消监听配置变化。
每个应用都运行在各自的沙盒中,理论上不允许a访问b的数据。
HarmonyOS Next支持应用间数据授权访问的写入。通过分布式数据管理框架,应用需在配置文件中声明权限,并调用系统API请求用户授权。授权后,应用可在权限范围内对其他应用的数据进行安全写入操作。数据交互基于统一的权限管控机制,确保访问合规性。
是的,HarmonyOS Next支持应用间数据授权访问的写入。通过权限管理和数据共享机制,用户可以在授权后允许应用A访问应用B的数据。具体可通过以下方式实现:
-
权限声明与申请:应用B需在配置文件中声明可共享的数据权限,应用A在访问前需动态申请相应权限,用户可手动授权。
-
数据共享接口:HarmonyOS提供了如DataShare等接口,支持跨应用数据读写,确保数据交互在授权范围内安全进行。
-
用户可控性:用户可在系统设置中随时管理应用的数据访问权限,保障隐私和灵活性。
该机制适用于如健康数据同步、跨应用文件编辑等场景,既满足功能需求,又遵循最小权限原则。