0

Android 5 представляет новый API для работы с SD-картой. Если вы хотите записывать файлы в какой-либо каталог на SC-карте, вам нужно получить к нему доступ. Насколько я знаю, это может быть сделано таким образом:Сохранение файлов на SD-карту на Android Lollipop

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); 
startActivityForResult(intent, 42); 

, а затем:

public void onActivityResult(int requestCode, int resultCode, Intent resultData) { 
    if (resultCode == RESULT_OK) { 
     Uri treeUri = resultData.getData(); 

     getActivity().getContentResolver().takePersistableUriPermission(treeUri, 
        Intent.FLAG_GRANT_READ_URI_PERMISSION | 
        Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 
    } 
} 

Этот подборщика папки запуска кода, а когда папка определена требует разрешения на папку, это Ури.

Но можно ли получить разрешения на точный каталог по его пути? Без использования выбора папок. Я имел в виду, что я знаю каталог, который я хочу получить, и я не хочу запускать Folder Picker, потому что он будет путать пользователя.

Как открыть DocumentFile без участия пользователя?

+0

проверка этого ответа http://stackoverflow.com/a/26765884/1484779 – jlopez

+0

@jlopez он не содержит ответа на мой вопрос –

ответ

2

Это невозможно. Пользователь должен выбрать каталог, используя сборщик файлов Android. Единственный способ, чтобы получить доступ к папке с помощью:

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); startActivityForResult(intent, 42);

Поскольку файл обеспечивается Storage Access Framework DocumentsProvider. На самом деле это может вернуть некоторые Uri из 3-го партийного приложения, которое не является реальным файлом, но какой-то сущностью, которую 3-е стороннее приложение представляет в виде файла.

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