【发布时间】:2015-03-10 00:34:15
【问题描述】:
我刚开始在 Android Studio 中编码,感觉很棒..!!
如何为“目录选择器”编写代码。即,当单击按钮时,一个简单的对话框/活动屏幕可以显示目录列表。
另外,想要将该目录中的所有文件存储到一个数组变量中。 (单击确定按钮后)。
PS:我在这里搜索并找到了一些很酷的“文件选择”,但我正在寻找目录选择器..!
提前致谢。
【问题讨论】:
标签: android directory picker filechooser
我刚开始在 Android Studio 中编码,感觉很棒..!!
如何为“目录选择器”编写代码。即,当单击按钮时,一个简单的对话框/活动屏幕可以显示目录列表。
另外,想要将该目录中的所有文件存储到一个数组变量中。 (单击确定按钮后)。
PS:我在这里搜索并找到了一些很酷的“文件选择”,但我正在寻找目录选择器..!
提前致谢。
【问题讨论】:
标签: android directory picker filechooser
使用以下代码选择目录
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");
}
}
【讨论】:
您还可以使用一些库。
例如:
https://github.com/passy/Android-DirectoryChooser
【讨论】:
尝试使用 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;
}
}
【讨论】:
还有一个开源库,它还可以进行目录选择器和打开/保存文件活动。它可以在 GitHub 上找到,地址为 https://github.com/BoardiesITSolutions/FileDirectoryPicker。
适用于 Android API 级别 17 及更高版本
免责声明:我写的
【讨论】:
从 Android 10 (API 29) 开始,直接访问外部存储已被弃用,取而代之的是存储访问框架 https://developer.android.com/guide/topics/providers/document-provider
【讨论】: