1 android android-file android-fileprovider
我想让用户在 Android 中的特定文件夹下选择一个文件,无论是使用内置 ui 还是第三方文件管理器。但是,我无法在较新版本的 android 上执行此操作ACTION_OPEN_DOCUMENT。我阅读了有关需要 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();
}
Run Code Online (Sandbox Code Playgroud)
这段代码只会进入“最近”文件夹,而不是我拥有的文件夹。
小智 5
尝试一下,它对我有用。
Uri uri = Uri.parse("content://com.android.externalstorage.documents/document/primary:Download");
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uri);
startActivityForResult(intent, 1);
Run Code Online (Sandbox Code Playgroud)
注意:EXTRA_INITIAL_URI仅支持Android 8及以上版本
| 归档时间: |
|
| 查看次数: |
607 次 |
| 最近记录: |