文件选择器中未显示Android SAF文档提供程序

文件选择器中未显示Android SAF文档提供程序,android,sftp,smb,storage-access-framework,Android,Sftp,Smb,Storage Access Framework,我目前正在测试Android SFTP文档提供程序()。它可以与系统的文件应用程序(Android 8.1)配合使用。特别是这个文件管理器在它的三个水平条菜单中显示了很多条目:下载、内部、SD、驱动器、SFTP和Termux 在我自己的应用程序中,我使用标准SAF方法打开一棵树: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Intent intent = new Intent(Intent.ACTION_

我目前正在测试Android SFTP文档提供程序()。它可以与系统的文件应用程序(Android 8.1)配合使用。特别是这个文件管理器在它的三个水平条菜单中显示了很多条目:下载、内部、SD、驱动器、SFTP和Termux

在我自己的应用程序中,我使用标准SAF方法打开一棵树:

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下载。没别的了

值得一提的是:Android Samba客户端与我的应用程序配合得很好,也就是说,它确实可以在文件选择器中看到。但SFTP并非如此

还要提到的是:原始ftpd(也可在F-Droid中使用)也没有显示SFTP文档Provider


我需要什么魔法吗?或者Samba DocumentsProvider与所有其他软件之间有根本区别吗?它是否更强大?

关键点是根目录。标志\u支持\u是\u子目录标志,由SMB文档提供商设置,但不是由SFTP提供商设置。另请参见[。令人费解的是,为什么Android开发者官方文档没有说明这种关系。最后,我不得不在功能上比较两个文档提供商的源代码


PS:blackapps批评的授权标志与此概念无关。

删除所有这些标志。它们是无用的。你不能授予任何东西。你必须等到有东西授予你。
注意奇怪的“SHOW\u ADVANCED”无论出于何种非常奇怪的原因,SD卡都需要一些资料。
。gui确实很满。但是你可以不用SD卡,但仍然可以在de gui中找到SD卡。只需知道如何使用。如果SD卡在文件应用程序中工作,它也应该在你的应用程序中工作。我在中没有看到你指定的应用程序。但是,不需要文档提供程序支持
ACTION\u OPEN\u DOCUMENT\u TREE
。一些只支持
ACTION\u OPEN\u DOCUMENT
ACTION\u CREATE\u DOCUMENT
。抱歉,我弄错了:SMB的文档提供程序在F-Droid中,但SFTP的文档提供程序不在F-Droid中。我相应地更新了问题。我还尝试在我的ow中调用ACTION\u OPEN\u DOCUMENTn应用程序,但它刚刚崩溃(“没有Blabla来处理请求”)。我找不到解决方案,一些人写道这是一些设备上的系统错误,所以我放弃了。也许“文件”应用程序在没有操作打开文档树的情况下工作?但这会很奇怪。