Я бы хотел, чтобы SAF «запустил навигатор в указанном документе, если это папка» (как его называют в документах).
Это не работает, поэтому мне также интересно, могу ли я добавить ярлыки хранилища в пользовательский интерфейс SAF. Смотрите картинку по этой ссылке: https://i.imgur.com/yGtcGMM.jpg
Но я думаю, что более возможно запустить пользовательский интерфейс SAF в определенной папке, поэтому я мог бы пойти на такой подход на данный момент. Я пробовал это в onCreate(...)
-метод:
String pathAsString = Environment.getExternalStorageDirectory() + "/myscientificapp/measurements/";
File pathAsFile = new File(pathAsString);
if (pathAsFile.exists()) { Log.d(TAG, "pathAsFile exists!"); } //This is printed in Logcat
android.net.Uri pathAsUri = Uri.fromFile(pathAsFile);
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, pathAsUri); //Does not make effect
startActivityForResult(intent, REQUEST_OPEN_DOCUMENT);
Дело в том, что это не работает .. или я не знаю, как это сделать. : /
Я немного читал об этих местах. Например, на Medium.com разработчик говорит:
При выборе местоположения для сохранения файла с помощью ACTION_CREATE_DOCUMENT или при открытии документа новый EXTRA_INITIAL_URI позволяет переопределить исходное местоположение по умолчанию (последнее местоположение, выбранное пользователем) с вашим собственным пользовательским начальным местоположением.
А на Android-документах мы можем прочитать об этом EXTRA_INITIAL_URI :
Абоненты могут установить URI документа через DocumentsContract # EXTRA_INITIAL_URI, чтобы указать начальное местоположение навигатора документов. Система приложит все усилия, чтобы запустить навигатор в указанном документе, если это папка, или папка, которая содержит указанный документ, если нет.
Мы также можем прочитать об этом в DocumentsContract # EXTRA_INITIAL_URI :
EXTRA_INITIAL_URI
...
Устанавливает желаемое начальное местоположение, видимое пользователю, когда отображается средство выбора файлов.
...
Местоположение должно указывать URI документа или URI дерева с идентификатором документа. Если этот URI идентифицирует не-каталог, навигатор документа попытается использовать родительский документ в качестве исходного местоположения.
Исходное местоположение зависит от системы, если этот дополнительный элемент отсутствует или не удалось найти навигатор документа желаемое начальное местоположение.
Языки высокой абстракции во всей своей красе, но я хотел бы хотя бы получить некоторые подробности о том, как использовать эту функцию.
Но здесь, в Stackoverflow, некоторые разработчики говорят нам, что не будет работать .
И некоторые темы пока не получили ответа .
Так что по некоторым источникам это должно работать.
Кто-то, кто знает, как создавать ярлыки в пользовательском интерфейсе SAF (см. Рисунок)? Или как заставить SAF «запускать навигатор в указанном документе, если это папка», например, с ACTION_CREATE_DOCUMENT? (Если я правильно помню, эти функции существовали в Windows 95, например:>)
EDIT:
Я удалил некоторые ссылки на git-проект из-за возможного «гниения ссылок», о котором намекнул @A Jar of Clay.
Я также попытался передать дерево Uri (как рекомендовано @CommonsWare) из ACTION_OPEN_DOCUMENT_TREE в метод intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, pathAsTreeUri);
. Но SAF не начался в месте, которое я прошел как Ури. (