В настоящее время я тестирую Android Поставщик документов SFTP (https://github.com/RikyIsola/Android-SFTP-Documents-Provider). Он отлично работает с приложением Files системы (Android 8.1). В частности, этот файловый менеджер показывает много записей в своем меню с тремя горизонтальными полосами: «Загрузки», «Внутренний», «SD», «Drive», «SFTP» и «Termux».
В моем собственном приложении я использую стандартный метод SAF, чтобы открыть tree:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
...
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uri);
}
intent.addFlags(
Intent.FLAG_GRANT_READ_URI_PERMISSION +
Intent.FLAG_GRANT_WRITE_URI_PERMISSION +
Intent.FLAG_GRANT_PREFIX_URI_PERMISSION +
Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
intent.putExtra("android.content.extra.SHOW_ADVANCED", true);
startActivityForResult(intent, REQUEST_DIRECTORY_SELECT);
}
Обратите внимание, что странные вещи "SHOW_ADVANCED" необходимы для просмотра SD-карты, по какой-то чрезвычайно странной причине. Однако, когда открывается средство выбора файлов, я вижу только Загрузки , Внутренние и SD . Больше ничего.
Стоит упомянуть: * Samba Client Android прекрасно работает с моим приложением, то есть действительно отображается в средстве выбора файлов. Но SFTP это не так.
Также стоит упомянуть: примитив ftpd (также доступный в F-Droid) также не показывает SFTP DocumentsProvider.
Нужно ли мне немного Манифест-фильтр-намерение-все, маги c? Или есть принципиальная разница между Samba DocumentsProvider и всеми остальными? Это что-то более мощное?