gpt4 book ai didi

android - 使用 Android NDK 从字符串路径打开文件

转载 作者:行者123 更新时间:2023-11-28 04:27:55 27 4
gpt4 key购买 nike

我最近一直在浏览 Android 文件访问文档,但我似乎无法弄清楚如何实际打开一个以字符串形式给出的文件,其中包含我想打开的文件的路径。

我(最终)想要完成的是这样的事情:

  1. 用户使用 Intents 选择特定类型的文本文件,接收该文件的 URI。我由此导出路径 (getPath()) 并将此字符串传递给 native C++ 代码。
  2. native C++ 从字符串打开文件,解析内容。
  3. 使用上述内容执行一些实际工作。

根据我目前的发现,似乎无法再以这种方式打开文件(至少从 SDK 版本 26 开始):

  • 一个我知道存在的文件的硬编码路径使我permission denied
  • getPath() 接收到的路径本身会触发 No such file or directory 错误。

一种解决方法是使用 ContentResolver 在 Java 端打开文件,然后将文件描述符传递给 native 端。这可行,但存在问题:文件可以包含对要打开的其他文件的引用(“包含文件”),使得这种解决方案的用途有限。

需要说明的是,这些文件本地驻留在 Android 系统的“USB”分区中,与应用程序本身无关。不作为 APK 的资源/ Assets 或此类其他问题似乎需要的任何类似内容。

总而言之,我想问题是这样的:是否可以打开一个文件,并可能打开它引用的任何其他文件,给定来自应用程序 Java 端的路径?执行此操作是否有任何要求,例如请求对文件夹或类似内容的正确权限?

最佳答案

从 Android 6.0(API 级别 23)开始,您需要 request permissions每次您的应用启动“dangerous actions”时,例如访问文件系统或读取联系人。链接的页面已经有一段代码,您可以复制。

在旧手机上,在 list 中请求权限就足够了,但是 target SDK version最近升至 8.0 (=26)。如果您想支持 6.0 之前的设备,Android 兼容性库将允许您调用相同的 API。

关于android - 使用 Android NDK 从字符串路径打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53831404/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com