Очевидно, что приложение "Подбор файлов" не полностью реализует намерение ACTION_OPEN_DOCUMENT_TREE.
Допустим, этот код выполняется:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.setType("vnd.android.document/directory");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, OPEN_DIRECTORY_REQUEST_CODE);
Выдается эта ошибка:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.OPEN_DOCUMENT_TREE cat=[android.intent.category.OPENABLE] typ=vnd.android.document/directory flg=0x43 }
то же самое с этим альтернативным типом "application / vnd.google-apps.folder"
или не включая строку, в которую добавлена категория OPENABLE
или используя intent.setType(DocumentsContract.Document.MIME_TYPE_DIR);
while, если этот код выполняется:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
startActivityForResult(intent, OPEN_DIRECTORY_REQUEST_CODE);
ошибок нет, но пользователь может выбрать только корни диска, поэтому облачное пространство не отображается.
Если ACTION_OPEN_DOCUMENT используется следующим образом:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, OPEN_FILE_REQUEST_CODE);
Облачные корни (только в облачном домене Drive, я думаю, единственное приложение, которое реализует SAF) доступны и файлы можно выбирать.
Я экспериментировал и реализовал Storage Access Framework. Смотрите, например, этот вопрос:
Storage Access Framework - не удалось получить дерево документов из URI (возвращено из приложения Drive)
где вы можете видеть, что эта функциональность существует, хотя это своего рода хак и относится к созданию папки, а не к ее выбору (папка должна быть «деревом документов»).
Я думаю, что должен найти правильный тип пантомимы, так что бы это могло быть? Я видел, что часто возникают ошибки, когда у намерения есть неправильный тип или флаг, но когда найдены правильные параметры, это работает.
В противном случае, как официально попросить Google сделать так, чтобы приложение SAF "средства выбора файлов" правильно реализовало намерение ACTION_OPEN_DOCUMENT_TREE для облачного домена, созданное ими для собственной Storage Access Framework на Android?
Надеюсь, это уже реализовано, на самом деле.