【发布时间】:2019-02-15 21:07:12
【问题描述】:
我想让用户在 Android 中的特定文件夹下选择一个文件,无论是使用内置 ui 还是第三方文件管理器。但是,我无法使用 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();
}
此代码只会转到“最近”文件夹,而不是我的文件夹。
【问题讨论】:
标签: android android-file android-fileprovider