Доступ к внутренней памяти в Android

Я разрабатываю приложение для Android, которое должно отображать изображения из папки камеры по умолчанию. Моя проблема в том, что я не знаю, как найти внутреннюю папку по умолчанию для хранения фотографий с камеры.

Когда я ищу его, подключая телефон к ПК (это Samsung Galaxy S7 без SD-карты), я вижу, что изображения хранятся в DCIM/Camera, Однако это не работает. Выполнение: files = new File("DCIM/Camera/"); Результаты в приложении говорят, что там ничего нет.

Как найти папку внутреннего хранилища по умолчанию для фотографий с камеры?

1 ответ

Решение

Во-первых, вам нужно понять Android.

  • Внутреннее хранилище - это личное хранилище приложения
  • Внешнее хранилище является общедоступной областью хранения

Внешнее хранилище в Android означает общедоступное хранилище и означает внутреннее хранилище, как в памяти устройства и SD-карте. Сохранение во внешнем хранилище означает внутреннее устройство и SD-карту, в то время как сохранение во внутреннем хранилище означает личное хранилище приложения.

Таким образом, изображения хранятся во внешнем хранилище или в общедоступном хранилище приложения, где любое приложение может сохранять, загружать и управлять файлами. Изображения являются общедоступными и, следовательно, не находятся во внутренней памяти по определению разработчика.

Теперь вам нужно WRITE_EXTERNAL_STORAGE разрешение, и если вы нацелены на API 23, вам также нужно запросить его, потому что это опасное разрешение.

Чтобы получить доступ к изображениям, вам нужно создать новый файл:

storageDir = new File(
    Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES
    ), 
    "album name here, or remove this part to save or load directly into DCIM"
);

Это может использоваться для сохранения или загрузки изображений, но не забудьте проиндексировать каталог, чтобы найти изображение перед загрузкой, чтобы предотвратить IOException

Другие вопросы по тегам