• Lv0
    粉丝1

积分24 / 贡献0

提问11答案被采纳0文章0

OpenHarmony 资源管理获取raw目录下文件的绝对路径方法 精华

leohe 显示全部楼层 发表于 2024-1-10 10:38:30

背景

  1. OpenHarmony4.0

需求

在src/main/resources/rawfile/目录下存有一个 broadcastpause720.h264文件. 在NDK层上需要以二进制的方式访问打开该文件. 首先需要获取该文件的绝对路径

官方提供的接口

$rawfile('broadcastpause720.h264')

仅能获得一个对象. 无法在APP运行时获取到该文件的绝对路径

问题

如何获取APP资源rawfile的绝对路径提供给NDK层访问?

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论7

深开鸿_王石

沙发 发表于 2024-1-10 16:28:37
应用的安装路径是:/data/app/el1/bundle/public/<PACKAGENAME>,然后资源路径是里面的entry/resources/rawfile/,有安全要求,所以不能直接访问;
应用访问,接口就是context.resourceManager.getRawFd("test.log"),或context.resourceManager.getRawFileDescriptor("test.log"),

能得到文件fd,通过fd可以操作文件

leohe

发表于 2024-1-11 15:09  IP属地: - 中国广东省广州市 中国电信IDC

回复 深开鸿_王石: arkts层和native 均有接口获取fd句柄.  
这两个层面上分别调用哪个接口从fd里面读取1024大小的buff?

深开鸿_王石

发表于 2024-1-11 18:14  IP属地: - 中国江苏省 中国移动IDC

回复 leohe: arkts层可以用fileio,native就用stdio里的方法,read,lseek这样

jyjy

发表于 2024-2-6 11:29  IP属地: 江苏省扬州市

回复 深开鸿_王石: 大佬你好 想问一下 native开发 /dev/vendor_storage设备文件要怎么访问?
使用open()接口打开,报错permission denied,应用配置了system_core、hos_system_app权限,用chmod修改了文件读写权限,参考文档使用mount也是没有权限。
还是这个路径需要怎么映射的方式读取?

深开鸿_王石

发表于 2024-2-6 15:47  IP属地: 江苏省

回复 jyjy: selinux的权限关了吗?

jyjy

发表于 2024-2-6 18:17  IP属地: - 中国江苏省扬州市 中国电信IDC

回复 深开鸿_王石: 是这个原因, selinux改成Permissive模式就可以了。
感谢大佬。

【5 条回复】

mean

板凳 发表于 2024-1-10 18:59:15
包管理子系统不支持按路径读取entry.har中的文件(任意路径都不行)

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部