HarmonyOS overlay机制动态添加没有权限
动态overlay使用方式2
应用通过addResource(path),实现资源覆盖;通过removeResource(path),实现overlay删除。overlay资源路径需经过元能力的getContext().BundleCodeDir获取此应用对应的沙箱根目录,由应用的沙箱根目录+overlay的hsp名称组成。如:let path = getContext().bundleCodeDir + “hsp名”,其对应沙箱路径为:/data/storage/el1/bundle/enter-release-signed.hsp。
getContext().bundleCodeDir获取的应用水箱目录不允许拼接路径访问资源文件,导致没有权限将下载好的hsp包存储在该目录下,此问题该如何处理
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 怎么动态设置某个组件添加浮层overlay?
550浏览 • 1回复 待解决
HarmonyOS ArkTS操作文件时,提问没有权限
195浏览 • 1回复 待解决
HarmonyOS 已经开启地图服务仍然提示没有权限
643浏览 • 1回复 待解决
动态申请权限能否添加描述
828浏览 • 1回复 待解决
deveco studio 成员账号没有获取自动签名的权限,只有主账号有权限
452浏览 • 1回复 待解决
有没有权限说明清单,分享一下啊?
4495浏览 • 1回复 待解决
HarmonyOS overlay机制调用后界面刷新问题
645浏览 • 1回复 待解决
HarmonyOS 有没有办法动态添加组件?
673浏览 • 1回复 待解决
HarmonyOS view动态添加
148浏览 • 1回复 待解决
HarmonyOS 怎么动态获取添加日历的权限,并往日历中写入日程
117浏览 • 1回复 待解决
without medialibrary permission没有媒体库权限是添加哪个权限呢?ReadMedia吗?
3858浏览 • 1回复 待解决
HarmonyOS 权限添加出错
60浏览 • 1回复 待解决
HarmonyOS 有没有deeplink 机制
86浏览 • 1回复 待解决
HarmonyOS 如何动态添加组件?
115浏览 • 1回复 待解决
HarmonyOS 为什么在这上面给手机或者模拟器上放一个文件,说没有权限怎么处理
90浏览 • 1回复 待解决
HarmonyOS 动态申请权限申请不了
105浏览 • 1回复 待解决
Harmony Navigation组件动态添加
239浏览 • 1回复 待解决
HarmonyOS Tabs组件怎么动态添加TabContent
149浏览 • 1回复 待解决
DirectionalLayout 动态添加组件问题
4644浏览 • 1回复 待解决
List没有Reverse属性。在聊天界面的时候,数据无法动态往上添加
715浏览 • 1回复 待解决
HarmonyOS 需要添加摇一摇权限和悬浮窗权限
192浏览 • 1回复 待解决
HarmonyOS 设置应用权限列表中没有位置权限
148浏览 • 1回复 待解决
HarmonyOS 添加权限后运行安装失败
791浏览 • 1回复 待解决
ets怎么实现动态添加组件?
3642浏览 • 1回复 待解决
文档中的动态overlay,是使用hdc file send命令把hsp包推到指定的应用安装路径下,再在代码中使用addResource(path)实现资源覆盖。但如果开发者的rom为user权限,会没有权限往安装路径下推hsp包,此时,可以通过以下步骤实现overlay:
1.在overlay hsp包的module.json5文件中,配置 "targetModuleName"和"targetPriority"值,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/module-configuration-file-V5#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%A0%87%E7%AD%BE
2.将overlay的hsp包和hap主包同时安装到手机端上,注意hsp包和hap包的签名需要一致,此时hsp包会存在与hap包的安装目录下
3.在hap包中通过this.context.resourceManager.addResource(this.path)方式动态overlay,path为this.context.bundleCodeDir + overlay包包名,注意包名需要与overlay包的module.json5中的name保持一致,如overlay包的module.json5中的name配置为’overlay’,则path为this.context.bundleCodeDir + ‘overlay.hsp’;
同时也可以使用overlay.setOverlayEnabled方式进行静态overlay
4.杀掉应用进程,重新进入应用,可以看到overlay成功。如果希望在线热更新,需要申请system_basic等级权限ohos.permission.LISTEN_BUNDLE_CHANGE