Подтвердить что ты не робот

Environment.getExternalStoragePublicDirectory предоставляет внутреннее хранилище

Я сохраняю изображение так:

File dcimDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
File picsDir = new File(dcimDir, "MyPics");
picsDir.mkdirs(); //make if not exist
File newFile = new File(picsDir, "image.png"));
OutputStream os;
try {
    os = new FileOutputStream(newFile);

    target.compress(CompressFormat.PNG, 100, os);

    os.flush();
    os.close();
    b.recycle();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

Однако, когда я ищу изображение через окна, он находится во внутренней памяти, галерея подтверждает это:

On PC

Gallery details

Этот последний запутан, он говорит о внутренней памяти, но также имеет sdcard0 в пути к файлу.

Итак, когда внешний не означает внешний? Является ли это устройством, настроенным на работу, или я пропускаю/не понимаю getExternalStoragePublicDirectory?

4b9b3361

Ответ 1

Механизм MTP иногда сообщает getExternalStorageDirectory() как "Внутреннее хранилище", поэтому он появляется под этим именем при подключении устройства в виде тома в Windows, Linux и т.д.

Внешнее хранилище всегда означает хранилище, доступ к которому пользователь может получить с помощью USB-кабеля. Метка "Внутреннее хранилище", вероятно, используется на устройствах, где внешнее хранилище является частью встроенной ( "внутренней" ) вспышки.