我刚开始在Android Studio编码,感觉棒极了..!!
如何编写“目录选择器”的代码。即,当单击按钮时,显示一个简单的对话框/活动屏幕,其中可以显示目录列表。
另外,希望将该目录中的所有文件存储到一个数组变量中(一旦单击确定按钮)。
附注:我在这里搜索并找到了一些很酷的“文件选择器”,但我正在寻找“目录选择器”!
谢谢提前。
我刚开始在Android Studio编码,感觉棒极了..!!
如何编写“目录选择器”的代码。即,当单击按钮时,显示一个简单的对话框/活动屏幕,其中可以显示目录列表。
另外,希望将该目录中的所有文件存储到一个数组变量中(一旦单击确定按钮)。
附注:我在这里搜索并找到了一些很酷的“文件选择器”,但我正在寻找“目录选择器”!
谢谢提前。
尝试使用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
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");
}
}