Доступ к внутренней памяти в 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