Как создать новую папку в корне SdCard на Android? - PullRequest
0 голосов
/ 25 октября 2018

Я хочу создать новую папку в Root или главной странице SdCard.Я использовал этот метод для получения местоположения SdCard:

File("/storage/sdcard1", "New folder")

Но этот метод не работал на некоторых устройствах.Мне нужен метод, который работает на всех устройствах и получить местоположение SdCard.

Я также пытался:

File(Environment.getExternalStorageDirectory(),"New folder")

Но этот метод предназначен для хранения устройства.Но я хочу SdCard.

1 Ответ

0 голосов
/ 25 октября 2018

Если вы хотите создать папку, запустите следующую строку кода:

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,Вы можете иметь это в наличии.

...