如何通过 NDK 访问 Android Lollipop DocumentFile 文件?

How to access Android Lollipop DocumentFile files via NDK?

如何在本机 JNI 代码中访问从 Android KitKat/Lollipop 中的 DocumentFile 生成的文件,因此我可以使用 fopen、fread 等。 我特别要求它通过 NDK 访问外部 SD 卡文件。

您可以使用文件描述符:

ParcelFileDescriptor filePfd;
DocumentFile file;
filePfd = getContentResolver().openFileDescriptor(file.getUri(), "w");
int fd = filePfd.getFd();

这个 int fd 可以传递给 JNI 并像往常一样使用 C++ 文件描述符:

FILE* file = NULL;
file = fdopen(fd, "r+b");

并且您需要访问 SD 卡上的文件或目录的权限