简单的 Android 目录选择器 - 如何?

Posted

技术标签:

【中文标题】简单的 Android 目录选择器 - 如何?【英文标题】:Simple Android Directory picker - How? 【发布时间】:2015-03-10 00:34:15 【问题描述】:

我刚开始在 android Studio 中编码,感觉很棒..!!

如何为“目录选择器”编写代码。即,当单击按钮时,一个简单的对话框/活动屏幕可以显示目录列表。

另外,想要将该目录中的所有文件存储到一个数组变量中。 (单击确定按钮后)。

PS:我在这里搜索并找到了一些很酷的“文件选择”,但我正在寻找目录选择器..!

提前致谢。

【问题讨论】:

【参考方案1】:

使用以下代码选择目录

        Intent result = new Intent();
        result.putExtra("chosenDir", path);
        setResult(RESULT_OK, result);

并获取所选路径覆盖 onActivityResult :

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    if(requestCode == PICK_DIRECTORY && resultCode == RESULT_OK) 
        Bundle extras = data.getExtras();
        String path = (String) extras.get("chosenDir");

    

【讨论】:

【参考方案2】:

您还可以使用一些库。 例如:https://github.com/passy/Android-DirectoryChooser

【讨论】:

【参考方案3】:

尝试使用 Intent.ACTION_OPEN_DOCUMENT_TREE

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) 
    Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); 
    i.addCategory(Intent.CATEGORY_DEFAULT);
    startActivityForResult(Intent.createChooser(i, "Choose directory"), 9999);

并从onActivityResult data.getData()中获取结果Uri

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) 
    super.onActivityResult(requestCode, resultCode, data);

    switch(requestCode) 
        case 9999:
            Log.i("Test", "Result URI " + data.getData());
            break;
    

【讨论】:

这适用于 API 21+ 您可以使用这个答案来获取实际的目录路径:***.com/a/29789495/5571772 @Milton 我的最低 SDK 是 API 19。有没有类似的方法可以实现相同的功能? @AurumTechie 您是否为 API 19 工作过?如果是,建议在 API 19 中解决此问题。【参考方案4】:

还有一个开源库,它还可以进行目录选择器和打开/保存文件活动。它可以在 GitHub 上找到,地址为 https://github.com/BoardiesITSolutions/FileDirectoryPicker。

适用于 Android API 级别 17 及更高版本

免责声明:我写的

【讨论】:

【参考方案5】:

从 Android 10 (API 29) 开始,直接访问外部存储已被弃用,取而代之的是存储访问框架 https://developer.android.com/guide/topics/providers/document-provider

【讨论】:

以上是关于简单的 Android 目录选择器 - 如何?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅显示月份和年份字段的 android 日期选择器?

如何在 xamarin android ui 测试自动化中使用日期选择器

如何创建新的“圆形”日期选择器 android 对话框

商城项目实战 | 1.1 Android 仿京东商城底部布局的选择效果 —— Selector 选择器的实现

android 文件选择器,用户选择保存路径

Android之简单的文件夹选择器实现