ANDROID ACTION_VIEW показывает неправильное изображение из URI

1

У меня есть приложение для Android, которое позволяет пользователю выбрать фотографию, которая уже была сделана. Когда пользователь выбирает фотографию, я захватываю информацию URI для этой фотографии, использую эту информацию для создания растрового изображения, а затем устанавливаю растровое изображение в ImageView. Все это прекрасно работает.

Затем я даю пользователю возможность выбрать изображение для просмотра. Когда пользователь выбирает просмотр изображения, я запускаю намерение ACTION_VIEW, передавая данные URI.

Intent intent = new Intent(Intent.ACTION_VIEW, pictureUri);
startActivity(intent);

Как вы можете видеть, это очень простой код, ничего особенного не происходит. Проблема в том, что когда я запускаю этот код на своем Droid под управлением Android 2.1, примерно в 6 или 7 раз из 10, приложение отобразит правильное изображение. Но другие 3 или 4 раза, мне показывают неправильную картину. Кроме того, каждый раз, когда отображается неправильное изображение, всегда отображается одинаковое неправильное изображение. Тот факт, что я вижу правильную картинку в большинстве случаев, заставляет меня поверить, что все, что я делаю в коде, в порядке, так что кто-нибудь может сказать мне, если вы видели эту проблему раньше, и еще лучше, есть ли решение?

Вот точная последовательность, которую я наблюдаю на своем Droid, когда я запускаю это (Примечание: 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

Имейте в виду, что когда я запускаю Activity с уже сохраненным URI (полученным из базы данных), я устанавливаю ImageView на основе данных URI в onCreate(), а изображение, отображаемое в ImageView, ВСЕГДА правильное изображение, Это не до тех пор, пока я фактически не решит просмотреть изображение с помощью ACTION_VIEW, что я вижу странное поведение. И я знаю, что это не что-то конкретное об этих двух фотографиях. Я наблюдал это поведение, используя другие фотографии в прошлом, и получил то же поведение.

Теги:
photo

1 ответ

0

Во-первых, я бы отлаживал/регистрировал значение pictureUri как при первоначальном выборе пользователем, так и перед тем, как вы введете его в свое намерение ACTION_VIEW, чтобы убедиться, что это то, что вы ожидаете от него эти места. Похоже, что после того, как пользователь выберет pic, вы храните uri локально и снова захватываете его, чтобы начать свое намерение. Так что, может быть, вы

  • сохранение случайного неправильного uri в правильном месте
  • сохранение правильного uri в неправильном месте
  • захват "сохраненного" uri из неправильного места.

Без дополнительного кода (как вы сохраняете и восстанавливаете uris) это сложно сказать, но это то, где я начну искать.

  • 0
    Привет Джош, я думаю, что данные URI были в порядке. В onCreate я открыл свою базу данных, в которой хранились данные URI, и установил изображение на основе этих данных. Поэтому, когда я переключался между портретным и ландшафтным режимом, Activity был бы уничтожен и снова вызван onCreate, получая данные из базы данных. В любом случае, после того, как я опубликовал свой вопрос, я немного очистил код, просто выполняя и подключая все, что могло привести к утечке памяти, и внезапно я больше не вижу проблемы. Я не уверен, что с этим делать, но проблемы больше нет.
  • 0
    Круто, рад слышать, что это больше не проблема.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню