【问题标题】:ANDROID ACTION_VIEW showing the wrong image from URIANDROID ACTION_VIEW 显示来自 URI 的错误图像
【发布时间】:2010-08-10 22:19:04
【问题描述】:

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

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

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

如您所见,这是非常简单的代码,没有什么特别之处。问题是,当我在运行 Android 2.1 的 Droid 上运行此代码时,大约 10 次中有 6 或 7 次,应用程序将显示正确的图片。但另外 3 或 4 次,我得到了错误的图片。此外,每次显示错误的图片时,总是显示相同的错误图片。大多数时候我看到正确的图片这一事实让我相信我在代码中所做的一切都很好,所以谁能告诉我你以前是否见过这个问题,更好的是,有解决方案吗?

这是我在运行此程序时在 Droid 上观察到的确切顺序(注意:图像 URI 在我启动 Activity 之前已保存):

- 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 中显示的图像始终是正确的图像.直到我真正决定使用 ACTION_VIEW 查看图像时,我才看到奇怪的行为。而且我知道这两张照片并不具体。我过去使用其他照片观察到这种行为,并得到了相同的行为。

【问题讨论】:

    标签: android photo


    【解决方案1】:

    首先,我会调试/记录 pictureUri 的值,无论是当它最初由用户选择时,还是在你将它推入你的 ACTION_VIEW 意图之前,看看它是否是你所期望的那些地方。听起来就像在用户选择图片后,您将 uri 存储在本地,然后再次抓取它以启动意图。所以也许你是

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

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

    【讨论】:

    • 嗨乔希,我认为 URI 数据很好。在 onCreate 中,我打开了存储 URI 数据的数据库,并根据该数据设置了图片。因此,当我在纵向和横向之间切换时,Activity 将被销毁并再次调用 onCreate,从数据库中获取数据。无论如何,在我发布我的问题之后,我做了一些代码清理,实际上只是通过并插入任何可能存在内存泄漏的东西,突然间我再也看不到问题了。我不知道该怎么做,但问题不再存在。
    • 太棒了,很高兴听到这不再是问题了。
    • 我也是!再次感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多