无法将导航器设置为ACTION_OPEN_DOCUMENT中的特定文件夹

时间:2019-02-15 21:07:13

标签: android android-file android-fileprovider

我想让用户使用内置ui或第三方文件管理器在Android的特定文件夹下选择一个文件。但是,我无法在 ACTION_OPEN_DOCUMENT 的较新版本的android上执行此操作。我阅读了有关需要DocumentProvider提供内容uri的文档,但是由于没有“内置”内容,我对此感到非常困惑,并且似乎根据文档,实现自己的目的是将文件提供给其他我不想在这里做的事。

在android实际禁止file:// uri之前,我所做的是使用ACTION_GET_CONTENT和'file://'uri与大多数第三方文件管理器应用一起使用。因此,如果有人知道在7.0之后支持它的一些技巧,我也将不胜感激。

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
Uri uri = Uri.parse(Environment.getExternalStorageDirectory() + "/myFolder/");
intent.setType("text/csv");
DocumentFile file = DocumentFile.fromSingleUri(getApplicationContext(), uri);
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, file.getUri());


intent.putExtra("android.content.extra.SHOW_ADVANCED", true);
intent.putExtra("android.content.extra.FANCY", true);
intent.putExtra("android.content.extra.SHOW_FILESIZE", true);


try {
    startActivityForResult(intent, 1);
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(getApplicationContext(), "Please install a File Manager.", Toast.LENGTH_SHORT).show();
}

此代码将仅转到“最近”文件夹,而不是我的文件夹。

1 个答案:

答案 0 :(得分:0)

尝试一下,它对我有用。

files/dashboards/
├── k8s-cluster-rsrc-use.json
├── k8s-node-rsrc-use.json
└── k8s-resources-cluster.json

注意:EXTRA_INITIAL_URI仅支持Android 8及更高版本