Если вы хотите создать папку, запустите следующую строку кода:
startActivityForResult(new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE), 42);
Выберите SD-карту в появившемся диалоговом окне.Следующий метод будет вызван после того, как вы закроете диалоговое окно, и внутри него вы сможете создать свой каталог.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
// Check for the integer request code originally supplied to startResolutionForResult().
case 42:
if (resultCode != RESULT_OK) return;
if(data != null) {
Uri treeUri = data.getData();
grantUriPermission(getPackageName(), treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
getContentResolver().takePersistableUriPermission(treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri );
DocumentFile myDirectory = pickedDir.createDirectory("MyDirectory");
}
break;
default: break;
}
}
PS1: 42 - это случайное число, которое я использую.Выберите любое уникальное положительное целое число вместо 42, если хотите.Лучше даже сделать его константой.
PS2: в onActivityResult
вы можете сохранить значение treeUri
в некоторой переменной, базе данных и т. Д., Так что каждый раз, когда вам нужно создавать дополнительные папки или файлы в корневом каталоге SD,Вы можете иметь это в наличии.