存储访问框架-文件选择器应用程序是否在云上未实现ACTION_OPEN_DOCUMENT_TREE?

时间:2019-06-19 09:40:17

标签: android android-intent cloud filepicker storage-access-framework

显然,“文件选择器”应用未完全实现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);

如果执行此代码,则:

 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);

云根(我认为仅云端硬盘云域,这是唯一实现SAF的应用程序)并且可以选择文件。

我进行了实验,并实现了存储访问框架。例如,请参见以下问题:

Storage Access Framework - failing to obtain document tree from uri (returned from Drive app)

您可以在其中看到该功能的存在,尽管它有点像黑客,但它指的是创建一个文件夹,而不是选择它(文件夹应该是“文档树”)。

我认为我必须找到正确的mime类型,那会是什么?我看到很多次,当意图的类型或标志错误,但是找到正确的参数时,它就会起作用。

否则,如何正式要求Google使SAF的“文件选择器”应用正确实现自己为Android上的存储访问框架创建的ACTION_OPEN_DOCUMENT_TREE意向的云域? 我希望实际上已经实施了。

0 个答案:

没有答案