2016-10-08 2 views
0

Я пытаюсь проехать через файлы на SD-карте с помощью C++ Android NDK, только для того, чтобы пользователь мог выбрать файл на своем устройстве, я использую заголовок dirent.h, и я получаю путь SD из java с помощью метода Environment.getExternalStorageDirectory()Программно активировать хранилище android

Когда я тестирую его на BlueStacks (в Windows 10), который имеет Android 4.4.2, функция правильно считывает имена файлов, но когда я тестирую его на Nexus 6p с Android 7 это не удается, и это дает мне ERRNO = 13, что означает:

#define EACCES  13 /* Permission denied */ 

на следующем посте, я мог бы найти причину, почему это происходит.

https://stackoverflow.com/a/36336679/5166295

Итак, есть ли какая-либо программный способ, чтобы включить эту опцию?

Это только в то время, когда я отлаживаю приложение, а в финальной версии (с APK) это исчезнет?

Или, Есть ли способ получить необработанный путь, а не символические ссылки?

Или, должен ли я показывать моим пользователям эту возможность вручную?

+0

У вас есть 'использует разрешение-READ_EXTERNAL_STORAGE' в ​​вашем файле манифеста? –

+0

Да, у меня есть READ и WRITE – quetzalfir

+0

'READ' бесполезно, так как' WRITE' подразумевает 'READ'. –

ответ

0

кажется, что с Android 6 разрешений изменились, так что теперь они имеют вид разрешений во время выполнения, и вы должны просить разрешения, когда вы собираетесь его использовать, так что по умолчанию не устанавливается, когда приложение установлено.

https://source.android.com/devices/tech/config/runtime_perms.html

1

Я получаю путь SD из Java с помощью метода Environment.getExternalStorageDirectory()

getExternalStorageDirectory() не имеет ничего общего с SD карты на ~ 2 млрд Android устройств. Это указывает на external storage, а не removable storage.

Есть ли программный способ включения этой опции?

Ваш код Java может request READ_EXTERNAL_STORAGE or WRITE_EXTERNAL_STORAGE at runtime. Я не верю, что есть способ запросить это прямо из NDK.

Это только пока я отлаживаю приложение, а в финальной версии (с APK) это исчезнет?

No.

Смежные вопросы