Как можно получить доступ к файлам, созданным с помощью DocumentFile в Android KitKat/Lollipop в Native JNI Code, поэтому я могу использовать fopen, fread, и т.п. Я особенно прошу это получить доступ к внешним файлам SD-карты через NDK.
Как получить доступ к файлам Lollipop для файлов Android через NDK?
Ответ 1
Вы можете использовать дескрипторы файлов:
ParcelFileDescriptor filePfd;
DocumentFile file;
filePfd = getContentResolver().openFileDescriptor(file.getUri(), "w");
int fd = filePfd.getFd();
Этот int fd
может быть передан JNI и использован как обычный дескриптор файла С++:
FILE* file = NULL;
file = fdopen(fd, "r+b");
И вам нужно разрешение на доступ к файлу или каталогу на SD-карте
Ответ 2
Вам нужно будет получить URI из файла с помощью DocumentFile.getURI()
, а затем преобразовать этот URI в полный путь.
Существует несколько примеров URI для пути в StackOverflow, здесь 1, который я использовал до того, как это работает довольно хорошо