我想使用作为Storage Access Framework一部分提供的android系统对话框来打开文件.我这样做
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/pdf");
startActivityForResult(intent, EDIT_REQUEST);
Run Code Online (Sandbox Code Playgroud)
然后处理返回的URI onActivityResult().
问题是,在结果菜单中,我得到的内容提供商远远少于我的预期.仅限Google云端硬盘和下载(请参阅下面的左侧屏幕截图).其他人,如Dropbox,Solid Explorer,......都没有显示.
我怀疑原因是这些应用程序根本没有设置必要的intent过滤器显示在此列表中.
但是,其他应用程序(例如Kaiten Mail或Chrome)以某种方式设法显示系统对话框,其中包含完全实现的内容提供程序,位于列表顶部,然后其他应用程序(如Dropbox和Solid Explorer)在下方用细条分隔(请参阅正确的屏幕截图).
我怎么能得到这种行为?

Google 相册更新后,我无法同时选择视频和照片。如果我使用单个“video/*”或“image/*”意图,它会像往常一样工作。在视频照片意图中,它忽略第二个参数。如果第一个是视频 - 它将是视频意图,如果是照片 - 您会建议选择照片。
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setAction(Intent.ACTION_PICK);
intent.setType("video/*,image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, getFileUri());
startActivityForResult(intent, 911);
Run Code Online (Sandbox Code Playgroud)
你知道如何让它工作吗?