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