HarmonyOS 鸿蒙Next中是否支持应用间数据授权访问的写入

HarmonyOS 鸿蒙Next中是否支持应用间数据授权访问的写入 是否支持应用间数据授权访问的写入,场景比如:在用户允许的前提下,允许a应用访问b应用的数据。

7 回复

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(一对多共享)

这是最经典和灵活的方式,适用于需要复杂业务逻辑处理的场景。

  1. 实现原理(来自《data-share-overview.md》、《share-data-by-datashareextensionability.md》)

    • 数据提供方(应用B):创建一个 DataShareExtensionAbility 子类,并重写其 insert, update, delete 等方法,在其中实现您自己的数据写入逻辑。这相当于创建了一个专门用于数据共享的后台服务。
    • 数据访问方(应用A):通过 DataShareHelper 连接到此扩展能力,然后调用 insertupdate 等方法。系统会自动拉起应用B的 DataShareExtensionAbility 来处理写入请求。
  2. 权限控制与用户授权

    • 静态配置:在应用B的 module.json5 中,为 DataShareExtensionAbility 配置 writePermission 字段,声明写入数据所需的权限(例如 com.example.permission.WRITE_MY_DATA)。
    • 动态申请:应用A必须在自己的 module.json5 中申请相应权限,并在运行时调用 requestPermissionsFromUser 接口,弹窗让用户授权。用户允许后,应用A才能成功调用写入接口。
  3. 特点

    • 优点:灵活性强,数据提供方可以完全控制数据写入的逻辑、校验和安全性。
    • 缺点:每次写入操作可能会拉起提供方的扩展能力进程。

方案二:通过静默数据访问(系统应用特性,高效共享)

此方案适用于 primarily 是简单的数据库增删改查操作,希望更高效率、无需拉起提供方的场景。

  1. 实现原理(来自《share-data-by-silent-access.md》)

    • 数据提供方(应用B):在 module.json5proxyData 节点中声明要共享的数据URI和访问权限(requiredWritePermission)。同时,需要将数据库文件托管给系统数据管理服务。
    • 数据访问方(应用A):在获得用户授权后,直接通过 DataShareHelper 的接口进行写入操作。数据管理服务会直接代理此操作,而不会拉起应用B
  2. 权限控制与用户授权

    • 与应用A通过 requestPermissionsFromUser 动态申请 requiredWritePermission 中定义的权限,并获得用户同意。
  3. 特点

    • 优点:性能更高,延迟更低,无需拉起提供方应用。
    • 缺点:主要面向系统应用,且业务逻辑处理能力有限(主要依赖数据库本身的能力)。

方案三:通过 UDMF 标准化数据通路(多对多共享)

此方案适用于更通用、更标准化的数据交换场景,例如文本、图片、文件等。

  1. 实现原理(来自《unified-data-channels.md》、《js-apis-data-unifiedDataChannel.md》)

    • 数据提供方(应用B):并不直接暴露自己的数据库,而是将需要共享的数据封装成标准化的 UnifiedData 对象,通过 unifiedDataChannel.insertData() 方法写入到系统的“公共数据通路”(如 DATA_HUB)中。
    • 数据访问方(应用A):通过 unifiedDataChannel.queryData() 查询并获取到这些数据。然而,UDMF 本身更侧重于数据的暂存和交换,对“更新”已有数据的支持需结合其他权限机制
  2. 结合权限管理(关键步骤,来自《js-apis-uripermissionmanager-sys.md》)

    • 如果 UnifiedData 中包含文件URI(如 file://...),应用A要写入该文件,需要应用B调用 grantUriPermissionByKey 系统接口,显式地授权给应用A。这个接口需要传入UDMF数据的唯一标识 key 和目标应用的 tokenId
    • 授权后,应用A就获得了对该文件的写入权限,可以进行修改。
  3. 特点

    • 优点:标准化程度高,适合多个应用间交换同一份数据。
    • 缺点:对于更新操作,流程相对间接,需要数据提供方主动授权。

总结与选择建议

特性 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开始,支持应用间配置共享。

运作机制

应用间配置共享运作机制如下所示:

  1. 配置发布方(即数据提供方):负责提供默认共享配置项,并能动态修改配置项信息。当前支持静态配置和动态配置两种配置方式。
  • 静态配置:应用包在安装时提供的默认共享配置项(不依赖应用启动即生效)。
  • 动态配置:配置发布方通过调用相关接口可以动态新增、删除或修改配置项(不依赖应用升级)。
  1. 配置访问方(即数据访问方):可通过调用接口获取配置信息、或者监听/取消监听配置变化。

每个应用都运行在各自的沙盒中,理论上不允许a访问b的数据。

HarmonyOS Next支持应用间数据授权访问的写入。通过分布式数据管理框架,应用需在配置文件中声明权限,并调用系统API请求用户授权。授权后,应用可在权限范围内对其他应用的数据进行安全写入操作。数据交互基于统一的权限管控机制,确保访问合规性。

是的,HarmonyOS Next支持应用间数据授权访问的写入。通过权限管理和数据共享机制,用户可以在授权后允许应用A访问应用B的数据。具体可通过以下方式实现:

  1. 权限声明与申请:应用B需在配置文件中声明可共享的数据权限,应用A在访问前需动态申请相应权限,用户可手动授权。

  2. 数据共享接口:HarmonyOS提供了如DataShare等接口,支持跨应用数据读写,确保数据交互在授权范围内安全进行。

  3. 用户可控性:用户可在系统设置中随时管理应用的数据访问权限,保障隐私和灵活性。

该机制适用于如健康数据同步、跨应用文件编辑等场景,既满足功能需求,又遵循最小权限原则。

回到顶部