Android: Достаточно ли EXTERNAL_CONTENT_URI для фотогалереи?

Я играю с классами Android MediaStore и пытался создать очень простое приложение для фотогалереи, когда заметил, что это два URI содержимого изображения: EXTERNAL_CONTENT_URI и INTERNAL_CONTENT_URI. Сначала я подумал, что это относится к расположению хранилища (внешняя SD или внутренняя память), но после небольшого тестирования это оказалось явно не так. Подробнее об этом я читал здесь, и мне показалось, указывают, что внутренний URI контента на самом деле является контентом, который является внутренним для каждого из приложений на устройстве. Однако я не совсем уверен и хотел услышать мнение более опытных разработчиков, которые лучше знакомы с классами MediaStore.

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


person idunnololz    schedule 04.06.2015    source источник


Ответы (1)


Внешнее и внутреннее хранилище относится не к расположению памяти, а к политике конфиденциальности в отношении этого. Внутреннее хранилище означает, что только приложения или процессы системы/привилегированного пользователя могут получить доступ к содержимому.

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

Например, у меня есть Samsung S5, и он помещает внутреннее и внешнее хранилище на одну и ту же «внутреннюю» флэш-память, на самом деле это просто отдельные разделы на одной и той же планке оперативной памяти.

Когда я добавляю SD-карту, она добавляет еще одно (дополнительное) внешнее хранилище.

Каждое устройство Android должно поставляться с внутренней и внешней памятью, поэтому устройства, которые поставляются без SD-карты, например, гарантированно будут иметь разделенную «внутреннюю» память для внутреннего и внешнего хранилища.

Что касается того, как относится External_Content_URI, он будет возвращать изображения, расположенные во внешнем хранилище - более внимательно читая документы, он говорит, что возвращает только для «основного» внешнего тома хранилища. Я только что сам заметил эту последнюю часть в кавычках, поэтому в ближайшие несколько дней я проверю, индексируется ли или извлекается вторичное внешнее хранилище медиахранилищем, если кто-то еще не поможет ответить на это первым.

http://developer.android.com/reference/android/provider/MediaStore.Images.Media.html

person NameSpace    schedule 04.06.2015
comment
Я думаю, что это хорошо отвечает на вопрос. - person idunnololz; 27.10.2016
comment
так медиа магазин все восстановил или нет?! - person Mohamed Alaa; 20.07.2017
comment
Немного поздно для вечеринки, но в моих экспериментах внешний контент uri извлекает оба внешних хранилища (первичное и вторичное). Возможно, мой комментарий поможет кому-то в будущем. - person pablo432; 20.09.2019
comment
Как говорит developer.android, EXTERNAL_CONTENT_URI URI стиля content:// для основного внешнего тома хранилища. - person Hamza Mehmood; 24.12.2019