I have just started coding in Android Studio and feeling Awesome..!!
How can I write a code for a \'Directory Picker\'. i.e., When a button is clicked, a simple Dialog/
As of Android 10 (API 29), direct access to external storage is deprecated in favor of storage access framework https://developer.android.com/guide/topics/providers/document-provider
Use below code to select directory
Intent result = new Intent();
result.putExtra("chosenDir", path);
setResult(RESULT_OK, result);
And to get the selected path override 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");
}
}
Also you can use some libraries.
for example:
https://github.com/passy/Android-DirectoryChooser
Try to use 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);
}
And get the result Uri from onActivityResult data.getData()
@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;
}
}
There's an open source library that does directory chooser and open/save file activities as well. It can be found on GitHub at https://github.com/BoardiesITSolutions/FileDirectoryPicker.
Works on Android API Level 17 and above
Disclaimer: I wrote it