使用Data模板的Ability简称Data,主要职责是管理其自身应用和其他应用存储数据的访问,并提供与其他应用共享数据的方法。Data既可用于同设备不同应用的数据共享,也支持跨设备不同应用的数据共享。
数据的存储方式多种多样,可以是传统意义上的数据库系统,也可以是本地磁盘上的文件。Data对外提供对数据的增、删、改、查以及打开文件等接口,这些接口的具体实现由开发者提供。
Data的提供方和使用方都通过URI(Uniform Resource Identifier,统一资源定位符)来标识一个具体的数据,如数据库中的某个表或磁盘上的某个文件。HarmonyOS的URI基于URI通用标准,具体格式如图5-19所示。
图5-19 URI格式
(1)scheme:协议方案名,固定为dataability,代表Data Ability使用的协议类型。
(2)authority:设备ID。如果为跨设备场景,则为目标设备的ID;如果为本地设备场景,则不需要填写。
(3)path:资源路径,代表特定资源的位置信息。
(4)query:查询参数。
(5)fragment:访问的子资源。
以下是具体的URI示例:
可以通过DataAbilityHelper类访问当前应用或其他应用提供的共享数据。DataAbilityHelper作为客户端,与提供方的Data进行通信。Data接收到请求后,执行相应的处理,并返回结果。Data-AbilityHelper提供了一系列与Data Ability对应的方法。
下面介绍DataAbilityHelper的具体使用步骤。
1. 声明使用权限
如果待访问的Data声明了访问需要权限,则访问此Data需要在配置文件中声明需要此权限。声明请参考权限申请字段说明,代码如下:
2. 创建DataAbilityHelper
DataAbilityHelper为开发者提供了creator()方法来创建DataAbilityHelper实例。该方法为静态方法,有多个重载。最常见的方法是通过传入一个context对象创建DataAbilityHelper对象。
以下为获取helper对象示例:
3. 访问Data Ability
DataAbilityHelper为开发者提供了一系列的接口来访问不同类型的数据,如文件或者数据库等。
(1)访问文件:DataAbilityHelper为开发者提供了FileDescriptor openFile (Uri uri, String mode)方法来操作文件。此方法需要传入两个参数,其中uri用来确定目标资源路径;mode用来指定打开文件的方式,可选方式包含r(读)、w(写)、rw(读写)、wt(覆盖写)、wa(追加写)、rwt(覆盖写且可读)。该方法返回一个目标文件的FD(File Descriptor,文件描述符),把文件描述符封装成流,即开发者可对文件流进行自定义处理。
(2)访问数据库:DataAbilityHelper为开发者提供了增、删、改、查以及批量处理等方法来操作数据库。