Папка Android Studio не создается - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь создать папку на своем устройстве, и результат не такой, как ожидалось.

У меня есть <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> в AndroidManifest.xml.

Мой код:

public void saveOnDevice(){
    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/hello");
    boolean x = true;
    if (!myDir.exists()) {
        x = myDir.mkdirs();
    }
    if(x) {
        System.out.println("Folder created " + root);
    }
    else{
        System.out.println("Folder not created" + root);
    }
}

Результат:

Folder not created /storage/emulated/0

Ожидаемый:

Folder created /storage/emulated/0

Я пробовал это на моем Samsung Galaxy S8.У меня не вставлена ​​SD-карта.У меня нет пути /storage/emulated/0 на моем устройстве.Почему это не работает и как я могу решить эту проблему?

1 Ответ

0 голосов
/ 03 июня 2019

У вас есть эта папка / storage / emulated / 0 на вашем устройстве. Вы, вероятно, просто не можете видеть это из-за уровня абстракции при использовании файлового браузера Samsungs.

Вы можете проверить это, используя более продвинутый файловый браузер, такой как FX File Explorer (https://play.google.com/store/apps/details?id=nextapp.fx)), и начните искать этот путь из "System /".

Эта строка root вам не поможет.

Вместо этого вы хотите сделать что-то вроде этого:

// create folder "myDir" in internal storage as sub directory of /storage/emulated/0
File myDir = new File(Environment.getExternalStorageDirectory(), "myDir");
// create file
File myFile = new File(myDir, "song.mp3");
// get file stream 
FileOutputStream fileStream = new FileOutputStream(myFile);

Тогда вы можете просто записать содержание ваших песен в fileStream.

Это немного сбивает с толку, что Environment.getExternalStorageDirectory() на самом деле дает вам внутреннее хранилище, но оно является внешним по отношению к каталогу ваших приложений, что-то вроде Android/your.apps.packagename/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...