Намерение ACTION_IMAGE_CAPTURE
выполняется любым приложением камеры, зарегистрированным для обработки на конкретном устройстве. Такие приложения значительно различаются, даже если вы смотрите только «официальные» приложения камеры, предварительно установленные на устройстве производителем.
Не все эти приложения, особенно на нишевых устройствах, полностью соответствуют официальным спецификациям. Известно, что телефоны Samsung широко относятся к требованиям контракта о намерениях.
В вашем случае код использует недокументированный "return-data"
дополнительный . Я вижу, что это упоминалось на некоторых форумах, связанных с Samsung, но даже тогда нет никаких доказательств того, что это действительно работает.
Только надежная ссылка - данные для ACTION_IMAGE_CAPTURE
состояний намерения,
Вызывающий может передать дополнительный EXTRA_OUTPUT, чтобы указать, где будет записано это изображение. Если EXTRA_OUTPUT отсутствует, то изображение небольшого размера возвращается в качестве растрового объекта в дополнительное поле. Это полезно для приложений, которым требуется только небольшое изображение.
Но в реальной жизни даже это не гарантируется. Это означает, что ваше приложение должно быть готово получить нулевые данные от ACTION_IMAGE_CAPTURE
просто потому, что вы не управляете приложением, которое выводит изображение на ваш onActivityResult()
, даже если вы не передаете дополнительно EXTRA_OUTPUT .