作者:坚果,公众号:”大前端之旅“,哔哩哔哩,OpenHarmony布道师,OpenHarmony校源行开源大使,51CTO博客专家博主,阿里云博客专家。
有时候,我们需要使用系统API,但是我们新建一个工程时,应用的类型默认为hos_normal_app(普通应用),APL级别默认为normal。
这个时候,我们就需要做些修改,如何修改呢?
我这里给大家给一个参考。
我们就拿这个权限举例
ohos.permission.SYSTEM_FLOAT_WINDOW
允许应用使用悬浮窗的能力。
权限级别:system_basic
授权方式:system_grant
ACL使能:TRUE
首先需要针对两种不同的模型,去声明权限
使用Stage模型的应用,需要在module.json5配置文件中声明权限。
{
"module" : {
// ...
"requestPermissions":[
{
"name" : "ohos.permission.SYSTEM_FLOAT_WINDOW",
"reason": "$string:reason",
"usedScene": {
"abilities": [
"FormAbility"
],
"when":"always"
}
}
]
}
}
使用FA模型的应用,需要在config.json配置文件中声明权限。
{
"module" : {
// ...
"reqPermissions":[
{
"name" : "ohos.permission.SYSTEM_FLOAT_WINDOW",
"reason": "$string:reason",
"usedScene": {
"ability": [
"FormAbility"
],
"when":"always"
}
},
]
}
}
开发者可以参考以下步骤,修改HarmonyAppProvision配置文件。
这里有两个办法:
1.找到allowed-acls这个字段。
由权限说明查询的信息得知,权限的ACL使能为TRUE
,这意味着我们可以通过ACL方式申请
将所需申请的权限中高于当前应用APL等级的,添加到allowed-acls
列表中,,如下所示:
"acls": {
"allowed-acls": [
"ohos.permission.SYSTEM_FLOAT_WINDOW"
]
},
2.还有一个办法就是
修改apl
字段的值为system_basic (system_core>system_basic>normal),高等级的应用可以申请该级别
{
...
"bundle-info":{
"developer-id":"OpenHarmony",
...
"apl":"system_basic",
"app-feature":"hos_system_app"
},
...
}
4.完成以上步骤后,打开DevEco Studio工具进行自动化签名即可。