默认情况下如何在ActionOpenDocument意向中显示“内部存储”选项

Sle*_*epz 6 android android-intent xamarin.android

我需要用户选择一个自定义文件类型的文件,该文件已从Windows文件浏览器拖到其android设备上,但是默认情况下内部存储选项不可用。

当我使用此方法启动意图时:

var libraryIntent = new Intent(Intent.ActionOpenDocument);
libraryIntent.SetType("application/*");
_activity.StartActivityForResult(libraryIntent, (int)ActivityRequestCode.ImportFeatureCodeLibrary);
Run Code Online (Sandbox Code Playgroud)

Android OS(5.1和6.0)显示以下屏幕:

在此处输入图片说明

用户必须知道转到右上角的按钮,然后选择显示内部文件存储的选项:

在此处输入图片说明

他们必须再次单击汉堡包,然后汉堡包才会显示在列表中:

在此处输入图片说明

有没有一种方法可以使该选项默认显示在列表中,或者甚至更好的方法是让用户放入“内部存储”文件选择器中?

bwt*_*bwt 7

您可以在上添加额外的内容intent

libraryIntent.PutExtra("android.content.extra.SHOW_ADVANCED", true);
Run Code Online (Sandbox Code Playgroud)

据我所知,这是一个未记录的额外内容,但是它可以在API 19到至少26之间工作


Nir*_*shi 0

请看一下该库 - Material File Picker
它允许使用 来显示具有指定路径的对话框.withPath(Environment.getExternalStorageDirectory().getAbsoluteFile())

整个创建代码:

new MaterialFilePicker()
    .withActivity(this)
    .withRequestCode(1)
    .withFilter(Pattern.compile(".*\\.txt$")) // Filtering files and directories by file name using regexp
    .withFilterDirectories(true) // Set directories filterable (false by default)
    .withHiddenFiles(true) // Show hidden files and folders
    .withPath(Environment.getExternalStorageDirectory().getAbsoluteFile())
    .start();
Run Code Online (Sandbox Code Playgroud)