繁体   English   中英

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

[英]Opening Files from a String Path with Android NDK

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

我(最终)想要完成的工作是这样的:

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

根据到目前为止的发现,似乎不再可能以这种方式打开文件(至少从SDK版本26开始):

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

一种解决方法是使用ContentResolver在Java端打开文件,然后将文件描述符传递到本机端。 这行得通,但是有问题:文件可以包含对其他要打开的文件(“包含文件”)的引用,从而限制了使用范围。

为了清楚起见,这些文件位于Android系统的“ USB”分区本地,与应用程序本身无关。 不能作为APK的资源/资产或其他类似问题所需的资源。

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

从Android 6.0(API级别23)开始,每次应用启动时,您都需要请求危险操作 ”(例如访问文件系统或读取联系人)的权限 链接的页面已经有一段代码可以复制。

在较旧的手机上,在清单中请求许可就足够了,但是目标SDK版本最近被提高到8.0(= 26)。 如果要支持6.0之前的设备,则Android兼容性库将允许您调用相同的API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM