# 跨应用数据共享概述

## 功能简介

跨应用数据共享提供了向其他应用共享以及管理其数据的方法，支持不同应用之间的数据协同。

在许多应用场景中都需要用到数据共享，比如将电话簿、短信、媒体库中的数据共享给其他应用等。当然，不是所有的数据都允许其他应用访问，比如账号、密码等；有些数据也只允许其他应用查询而不允许其删改，比如短信等。所以针对不同数据共享场景以及数据隐私保护，设计一个安全、便捷的跨应用数据共享机制是十分必要的。

当前，基于跨应用数据共享中涉及的数据提供方应用个数的不同情况，数据管理提供支持一对多跨应用数据共享和多对多跨应用数据共享的能力。

## 基本概念

在进行跨应用数据共享开发前，先了解以下相关概念。

* **数据提供方**：提供数据及实现相关业务的应用程序，也称为生产者或服务端。

* **数据访问方**：访问数据提供方所提供的数据或业务的应用程序，也称为消费者或客户端。

* **数据集**：用户要插入的数据集合，可以是一条或多条数据。数据集以键值对的形式存在，键为字符串类型，值支持数字、字符串、布尔值、无符号整型数组等多种数据类型。

* **结果集**：用户查询之后的结果集合，其提供了灵活的数据访问方式，以便用户获取各项数据。

* **谓词**：用户访问数据库中的数据所使用的筛选条件，经常被应用在更新数据、删除数据和查询数据等场景。

## 一对多跨应用数据共享

基于跨应用一对多数据共享的场景，可通过DataShare实现。DataShare实现数据共享时，包括数据提供方和数据访问方，具体相关实现可见下文。

### 具体实现

数据提供方无需进行繁琐的封装，可直接使用DataShare向其他应用共享数据；对数据访问方来说，因DataShare的访问方式不会因数据提供的方式而不同，只需要学习和使用一套接口即可，大大减少了学习时间和开发难度。

DataShare实现跨应用数据共享方式如下：

* 使用DataShareExtensionAbility实现数据共享：目前仅对系统应用开放，暂不具体展开提供相关内容和指导。

* 通过数据管理服务实现数据共享静默访问：目前仅对系统应用开放，暂不具体展开提供相关内容和指导。

* [应用间配置共享](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/share-config)

  这种方式通过集中管理公共配置信息，在不同应用间共享配置，提升协作效率。适用于跨应用共享配置信息，适用于需要在不同应用间共享公共配置数据，没有特殊业务的情况。

### 约束限制

* 当前仅支持在Stage模型下，进行同设备跨应用数据共享相关能力的开发。

## 多对多跨应用数据共享

区别于一对多数据共享只有一个数据提供方，当多个应用之间需要相互进行数据共享时，即多对多的跨应用数据共享场景下，对于数据的定义、流通和权限管理等是十分必要的。统一数据管理框架（Unified Data Management Framework, UDMF）即提供一种新的数据共享与交互方式，可以实现多对多跨应用数据共享，具体相关实现可见下文。

### 具体实现

[通过标准化数据通路实现数据共享](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/unified-data-channels)

应用可以根据UDMF标准化数据通路提供的数据接入与读取接口，将符合标准化数据定义的数据写入UDMF不同的数据共享通路，并提供多应用进行读取。写入UDMF中的数据依据应用定义的权限、数据通路定义的权限以及整个UDMF框架定义的权限管理逻辑进行管理，写入通路中的数据的生命周期的管理也遵循上述逻辑。这样离散在各个应用的碎片化数据可以在UDMF的不同通路中形成聚合效应，提升开发者跨应用数据协同的效率，同时提升用户的数据体验。

