У меня есть приложение для Android, которое позволяет пользователю выбрать фотографию, которая уже была сделана. Когда пользователь выбирает фотографию, я захватываю информацию URI для этой фотографии, использую эту информацию для создания растрового изображения, а затем устанавливаю растровое изображение в ImageView. Все это прекрасно работает.ANDROID ACTION_VIEW показывает неправильное изображение из URI
Затем я предоставляю пользователю возможность выбрать изображение для просмотра. Когда пользователь выбирает просмотр изображения, я запускаю намерение ACTION_VIEW, передавая данные URI.
Intent intent = new Intent(Intent.ACTION_VIEW, pictureUri);
startActivity(intent);
Как вы можете видеть, это очень простой код, ничего особенного не происходит. Проблема в том, что когда я запускаю этот код на своем Droid под управлением Android 2.1, примерно в 6 или 7 раз из 10, приложение отобразит правильное изображение. Но другие 3 или 4 раза, мне показывают неправильную картину. Кроме того, каждый раз, когда отображается неправильное изображение, всегда отображается одинаковое неправильное изображение. Тот факт, что я вижу правильную картинку большую часть времени, заставляет меня поверить, что все, что я делаю в коде, прекрасно, так может кто-нибудь сказать мне, если вы видели эту проблему раньше, и еще лучше, есть ли решение?
Вот точная последовательность, я наблюдаю на моем Droid, когда я запускаю этот (Примечание: Image URI уже сохранен, прежде чем начать свою деятельность):
- I choose "View Photo" in the Activity
- When things work, I get taken to the gallery and shown image 74
- Each time things do not work, I get shown image 82
Имейте в виду, что, когда я начинаю активность с уже сохраненным URI (полученным из базы данных), я установил ImageView на основе данных URI в onCreate(), а изображение, отображаемое в ImageView, ВСЕГДА правильное изображение. Пока я не решил просмотреть изображение с помощью ACTION_VIEW, я вижу странное поведение. И я знаю, что это не что-то конкретное об этих 2 фотографиях. Я наблюдал это поведение, используя другие фотографии в прошлом, и получил такое же поведение.
Привет, Джош, я думаю, что данные URI были в порядке. В onCreate я открыл свою базу данных, где хранятся данные URI, и я установил изображение на основе этих данных. Поэтому, когда я переключался между портретом и ландшафтом, активность будет уничтожена, а функция onCreate снова будет перехвата данных из базы данных. В любом случае, после того, как я разместил свой вопрос, я немного очистил код, просто пропустил и подключил все, что было потенциальной утечкой памяти, и вдруг я больше не вижу проблемы. Я не уверен, что с этим делать, но проблема больше не существует. – Michael
Удивительный, рад слышать, что это уже не проблема. – Josh
Да, я тоже! Еще раз спасибо за предложения. – Michael