ANDROID ACTION_VIEW显示来自URI的错误图像

时间:2010-08-10 22:19:05

标签: android photo

我有一个Android应用程序,允许用户选择已拍摄的照片。用户选择照片后,我会抓取该照片的URI信息,使用该信息创建位图,然后在ImageView中设置位图。这一切都很好。

然后我给用户选择要查看的图片。当用户选择查看图片时,我启动一个ACTION_VIEW意图,传递URI数据。

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

正如您所看到的,这是非常简单的代码,没有什么特别的。问题是,当我在运行Android 2.1的Droid上运行此代码时,大约有6或7次,应用程序将显示正确的图片。但其他3到4次,我得到了错误的图片。此外,每次显示错误的图像时,它始终显示相同的错误图像。我在大多数情况下看到正确的图片这一事实让我相信我在代码中所做的一切都很好,所以任何人都可以告诉我你以前是否已经看过这个问题,而且更好的是,是否有解决方案?< / p>

这是我在运行时在Droid上观察到的确切序列(注意:在我启动Activity之前已经保存了图像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(从数据库中检索)启动Activity时,我根据onCreate()中的URI数据设置了ImageView,而ImageView中显示的Image始终是正确的图像。直到我真的决定使用ACTION_VIEW查看图像,我才看到奇怪的行为。我知道这两张照片并不具体。我过去使用其他照片观察到这种行为,并且行为相同。

1 个答案:

答案 0 :(得分:0)

首先,我会调用/记录pictureUri的值,当用户最初选择它并将其推入ACTION_VIEW意图之前,看看它是否符合您的预期它在那些地方。听起来就像用户选择了一张照片,你在本地存储了uri,并再次抓取它以启动意图。所以也许你是

  • 将随机错误的uri存储在正确的位置
  • 将正确的uri存放在错误的位置
  • 从不正确的地方抓住“已保存”的uri。

如果没有更多代码(如何保存和恢复uris),很难说,但这就是我开始寻找的地方。