HarmonyOS 鸿蒙Next photoAccessHelper getAlbums getAssets 方式获取的 uri,C++ 侧无法打开文件

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next photoAccessHelper getAlbums getAssets 方式获取的 uri,C++ 侧无法打开文件

使用 picker 获取 uri,然后在 C++ 侧使用 OH_FileUri_GetPathFromUri 转为 path,然后 open 是正常的。  但是使用 photoAccessHelper getAlbums getAssets 方式获取的 uri,上述流程 open 时报错 errno=2 no such file or directory(已申请相应的读写权限) 选择系统相册获取到uri后,open 时报错


更多关于HarmonyOS 鸿蒙Next photoAccessHelper getAlbums getAssets 方式获取的 uri,C++ 侧无法打开文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
picker把图片转移到应用沙箱了所以能直接打开,photoAccessHelper只能获取uri,打开uri必须要有桥接

需要调用调fs.open接口直接打开uri file://media/Photo/xxxx

不支持在c侧直接打开媒体库路径

需要用户手动将文件转存到应用内沙箱,然后把沙箱路径传到c侧去打开

更多关于HarmonyOS 鸿蒙Next photoAccessHelper getAlbums getAssets 方式获取的 uri,C++ 侧无法打开文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,若遇到通过photoAccessHelpergetAlbumsgetAssets方式获取的URI在C++侧无法打开文件的问题,这通常是因为URI格式或权限处理不当。

首先确认URI格式正确无误,且确实指向了可访问的存储位置。鸿蒙系统中,URI可能包含特殊权限要求,这些权限需要在应用的manifest文件中声明,并且在运行时请求。

确保应用已获得必要的存储权限,如ohos.permission.READ_MEDIAohos.permission.WRITE_MEDIA,这取决于你的操作是读取还是写入。

在C++侧,使用合适的API来解析URI并打开文件。鸿蒙提供了一套本地文件访问接口,但直接处理URI可能需要使用系统提供的URI解析和文件访问服务。例如,可以使用FileIoManager或其他相关服务来访问文件。

如果C++代码中直接使用了文件路径而非URI,确保路径转换正确,即从URI转换到系统可识别的本地路径。

最后,检查是否有任何系统级的错误或日志信息,这可以提供更多关于为何文件无法打开的线索。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部