【问题标题】:can't set navigator to specific folder in ACTION_OPEN_DOCUMENT无法将导航器设置为 ACTION_OPEN_DOCUMENT 中的特定文件夹
【发布时间】: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


    【解决方案1】:

    试试吧,它对我有用。

    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);
    

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

    【讨论】:

    • 如果在 Android 7 或更早版本上使用 EXTRA_INITIAL_URI 会发生什么?它会崩溃还是只是没有打开正确的文件夹?
    • 如果我在下载文件夹中有一个子文件夹怎么办?它不起作用primary:Download/AnotherFolder
    • @user924 url​​encode primary:Download%2FAnotherFolder
    • @AlanNelson 只是没有打开正确的文件夹
    猜你喜欢
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2015-10-10
    相关资源
    最近更新 更多