简单的Android Directory选择器 - 如何?

时间:2015-01-12 09:22:48

标签: android directory picker

我刚开始在Android Studio中编码并感觉很棒.. !!

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

此外,还希望将该目录中的所有文件存储到Array变量中。 (单击确定按钮后)。

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

提前致谢。

5 个答案:

答案 0 :(得分:20)

尝试使用Intent.ACTION_OPEN_DOCUMENT_TREE

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
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(requestCode) {
        case 9999:
            Log.i("Test", "Result URI " + data.getData());
            break;
    }
}

答案 1 :(得分:3)

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

答案 2 :(得分:0)

有一个开放源代码库,它执行目录选择器以及打开/保存文件活动。可以在GitHub https://github.com/BoardiesITSolutions/FileDirectoryPicker上找到它。

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

免责声明:我写了

答案 3 :(得分:0)

从Android 10(API 29)开始,不建议直接访问外部存储,而推荐使用存储访问框架https://developer.android.com/guide/topics/providers/document-provider

答案 4 :(得分:-6)

使用以下代码选择目录

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

    }
}