ANDROID ACTION_视图显示URI中的错误图像

ANDROID ACTION_视图显示URI中的错误图像,android,photo,Android,Photo,我有一个Android应用程序,允许用户选择已经拍摄的照片。一旦用户选择了一张照片,我就获取该照片的URI信息,使用该信息创建位图,然后在ImageView中设置位图。这一切都很好 然后,我给用户选择图片进行查看的选项。当用户选择查看图片时,我启动一个ACTION\u view intent,传递URI数据 Intent intent = new Intent(Intent.ACTION_VIEW, pictureUri); startActivity(intent); 正如您所看到的,这是一

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

然后,我给用户选择图片进行查看的选项。当用户选择查看图片时,我启动一个ACTION\u view intent,传递URI数据

Intent intent = new Intent(Intent.ACTION_VIEW, pictureUri);
startActivity(intent);
正如您所看到的,这是一个非常简单的代码,没有什么特别之处。问题是,当我在运行Android2.1的Droid上运行这段代码时,大约10次中有6到7次,应用程序将显示正确的图片。但另外3到4次,我看到了错误的图片。而且,每次显示错误的图片时,总是显示相同的错误图片。事实上,我在大多数情况下都看到了正确的情况,这让我相信我在代码中所做的一切都是好的,那么有人能告诉我,您以前是否见过这个问题,更好的是,有解决方案吗

以下是我运行此操作时在Droid上观察到的确切顺序(注意:在我开始活动之前,图像URI已经保存):


请记住,当我使用已保存的URI(从数据库检索)启动活动时,我根据onCreate()中的URI数据设置了ImageView,并且ImageView中显示的图像始终是正确的图像。直到我真正决定使用ACTION_view查看图像时,我才看到奇怪的行为。我知道这两张照片没有什么特别之处。我在过去使用其他照片观察到了这种行为,并得到了相同的行为。

首先,我会调试/记录用户最初选择的
pictureUri
的值,然后再将其放入
ACTION\u视图
意图中,以查看它是否是您在这些地方期望的值。这听起来像是在用户选择了一个pic之后,您正在本地存储uri,然后再次抓取它以启动意图。所以也许你是

  • 将随机错误的uri存储在正确的位置
  • 将正确的uri存储在错误的位置
  • 从错误位置获取“已保存”uri

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

嗨,Josh,我认为URI数据很好。在onCreate中,我打开了存储URI数据的数据库,并根据该数据设置了图片。因此,当我在纵向和横向之间切换时,活动将被销毁,并再次调用onCreate,从数据库中获取数据。在任何情况下,在我发布我的问题后,我做了一些代码清理,实际上只是检查并插入了任何可能存在内存泄漏的内容,突然我不再看到问题了。我不知道该怎么办,但问题已经不存在了。太棒了,很高兴听到这不再是问题了。是的,我也是!再次感谢你的建议。
- 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