HarmonyOS 鸿蒙Next ArkTS语言教程入门学习第62天,访问及DataAbility权限控制。
HarmonyOS 鸿蒙Next ArkTS语言教程入门学习第62天,访问及DataAbility权限控制。 1、访问DataAbility
访问DataAbility需导入基础依赖包,以及获取与DataAbility子模块通信的URI字符串。
其中,基础依赖包包括:
访问DataAbility的示例代码如下:
// 作为参数传递的URI,与config中定义的URI的区别是多了一个"/",有三个"/"
import featureAbility from '[@ohos](/user/ohos).ability.featureAbility'
import ohos_data_ability from '[@ohos](/user/ohos).data.dataAbility'
import ohos_data_rdb from '[@ohos](/user/ohos).data.rdb'
let urivar = "dataability:///com.ix.DataAbility"
let DAHelper = featureAbility.acquireDataAbilityHelper(urivar);
- 构建数据库相关的RDB数据。
let valuesBucket = {"name": "gaolu"}
let da = new ohos_data_ability.DataAbilityPredicates()
let valArray =new Array("value1");
let cars = new Array({"batchInsert1" : "value1",});
注:关于DataAbilityPredicates的详细内容,请参考DataAbility谓词。
调用insert方法向指定的DataAbility子模块插入数据。
// callback方式调用:
DAHelper.insert(
urivar,
valuesBucket,
(error, data) => {
console.info("DAHelper insert result: " + data)
}
);
// promise方式调用(await需要在async方法中使用):
let datainsert = await DAHelper.insert(urivar, valuesBucket).then((data) => {
console.info("insert success.");
}).catch((error) => {
console.error("insert failed.");
});
调用delete方法删除DataAbility子模块中指定的数据。
// callback方式调用:
DAHelper.delete(
urivar,
da,
(error, data) => {
console.info("DAHelper delete result: " + data)
}
);
// promise方式调用(await需要在async方法中使用):
let datadelete = await DAHelper.delete(
urivar,
da,
);
调用update方法更新指定DataAbility子模块中的数据。
// callback方式调用:
DAHelper.update(
urivar,
valuesBucket,
da,
(error, data) => {
console.info("DAHelper update result: " + data)
}
);
// promise方式调用(await需要在async方法中使用):
let dataupdate = await DAHelper.update(
urivar,
valuesBucket,
da,
);
调用query方法在指定的DataAbility子模块中查找数据。
// callback方式调用:
DAHelper.query(
urivar,
valArray,
da,
(error, data) => {
console.info("DAHelper query result: " + data)
}
);
// promise方式调用(await需要在async方法中使用):
let dataquery = await DAHelper.query(
urivar,
valArray,
da
);
调用batchInsert方法向指定的DataAbility子模块批量插入数据。
// callback方式调用:
DAHelper.batchInsert(
urivar,
cars,
(error, data) => {
console.info("DAHelper batchInsert result: " + data)
}
);
// promise方式调用(await需要在async方法中使用):
let databatchInsert = await DAHelper.batchInsert(
urivar,
cars
);
调用executeBatch方法向指定的DataAbility子模块进行数据的批量处理。
// callback方式调用:
DAHelper.executeBatch(
urivar,
[
{
uri: urivar,
type: featureAbility.DataAbilityOperationType.TYPE_INSERT,
valuesBucket: {"executeBatch" : "value1",},
predicates: da,
expectedCount:0,
predicatesBackReferences: null,
interrupted:true,
}
],
(error, data) => {
console.info("DAHelper executeBatch result: " + data)
}
);
// promise方式调用(await需要在async方法中使用):
let dataexecuteBatch = await DAHelper.executeBatch(
urivar,
[
{
uri: urivar,
type: featureAbility.DataAbilityOperationType.TYPE_INSERT,
valuesBucket:
{
"executeBatch" : "value1",
},
predicates: da,
expectedCount:0,
predicatesBackReferences: null,
interrupted:true,
}
]
);
DataAbility的客户端的接口是由工具接口类对象DataAbilityHelper向外提供,相关接口可参考DataAbilityHelper模块。
2、DataAbility权限控制
DataAbility提供数据服务,并不是所有的Ability都有权限读写它,DataAbility有一套权限控制机制来保证数据安全。分为静态权限控制和动态权限控制两部分。
2.1、静态权限控制
DataAbility作为服务端,在被拉起的时候,会根据config.json里面配置的权限来进行校验,有"readPermission"、"writePermission"和"Permission"三个配置项,
可以不配或者为空。示例如下:
"abilities": [{
"srcPath": "DataAbility",
"name": ".DataAbility",
"icon": "$media:icon",
"srcLanguage": "ets",
"description": "$string:description_dataability",
"type": "data",
"visible": true,
"uri": "dataability://ohos.samples.etsdataability.DataAbility",
"readPermission":"ohos.permission.READ_CONTACTS",
"writePermission":"ohos.permission.WRITE_CONTACTS"
}]
客户端在拉起DataAbility的时候,需要校验客户端是否有权限拉起该DataAbility。客户端的权限配置在config.json配置文件的"module"对象的"reqPermissions"对象中,示例如下:
{
"module": {
"reqPermissions":[
{
"name": "ohos.permission.READ_CONTACTS"
},
{
"name": "ohos.permission.WRITE_CONTACTS"
}
]
}
}
2.1、动态权限控制
静态权限校验只能控制某个DataAbility是否能被另一个Ability或应用拉起,无法精确校验每个读写接口的权限,因为拉起DataAbility的时候,还不知道应用是否需要读写它的数据。
动态权限控制是校验每个数据操作的接口是否有对应的权限。客户端调用数据操作接口所需的权限如下表所示。
需要配置读权限的接口 | 需要配置写权限的接口 | 据实际操作配置读写权限的接口 |
---|---|---|
query、normalizeUri、denormalizeUri、openfile(传入mode有’r’) | insert、batchInsert、delete、update、openfile(传入mode有’w’) | executeBatch |
对于需要配置读权限的接口,服务端需要配置readPermission,客户端必须申请相应的读权限才能调用相关的接口。
对于需要配置写权限的接口,服务端需要配置writePermission,客户端必须申请相应的写权限才能调用相关的接口。
更多关于HarmonyOS 鸿蒙Next ArkTS语言教程入门学习第62天,访问及DataAbility权限控制。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,ArkTS语言用于开发应用程序。第62天的教程主要涉及访问及DataAbility权限控制。DataAbility是鸿蒙系统中用于数据访问的组件,允许应用程序通过统一的接口访问不同类型的数据源。
在鸿蒙系统中,权限控制是确保应用程序安全访问数据的关键机制。通过权限控制,可以限制应用程序对敏感数据的访问,防止未经授权的操作。在ArkTS中,权限控制主要通过配置文件(config.json
)和代码中的权限声明来实现。
在config.json
文件中,开发者需要声明应用程序所需的权限。例如,如果应用程序需要访问某个DataAbility,则需要在配置文件中添加相应的权限声明。权限声明通常包括权限名称和权限级别,确保应用程序在运行时能够正确获取所需的权限。
在代码中,开发者可以通过调用系统API来检查和管理权限。例如,使用abilityAccessCtrl
模块中的requestPermissionsFromUser
方法,可以动态请求用户授权。此外,开发者还可以通过checkAccessToken
方法检查当前应用程序是否具有所需的权限。
在DataAbility的访问控制中,开发者可以通过实现DataAbilityHelper
类来管理数据访问。通过设置访问权限,可以控制哪些应用程序或用户能够读取或写入数据。权限控制可以在DataAbility的onCreate
方法中进行初始化,并在数据操作时进行验证。
总之,鸿蒙Next中的ArkTS语言通过配置文件和代码中的权限声明,结合系统API和DataAbility的访问控制机制,实现了对数据访问的精细化管理,确保应用程序在访问数据时的安全性和合规性。
更多关于HarmonyOS 鸿蒙Next ArkTS语言教程入门学习第62天,访问及DataAbility权限控制。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,ArkTS语言通过DataAbility实现数据访问与权限控制。DataAbility是鸿蒙系统提供的一种数据共享机制,允许应用间安全地共享数据。要访问DataAbility,首先需在config.json
中声明所需权限,如ohos.permission.READ_USER_STORAGE
。然后,通过DataAbilityHelper
类进行数据操作,如查询、插入、更新等。权限控制通过requestPermissionsFromUser
方法动态申请,确保数据访问的安全性。开发者应遵循最小权限原则,仅申请必要的权限,以保护用户隐私。