gpt4 book ai didi

android - 如何验证图像 URI 在 Android 中是否有效?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:39:11 25 4
gpt4 key购买 nike

我正在构建自己的联系人选择器,因为我需要多选支持。一切正常,除了联系人图像的一个小问题。

对于没有图像的联系人,我会显示“无图像”图像。这适用于电话通讯簿中的联系人。但是,当涉及到来 self 的 google 联系人的图像时,我遇到了问题。

我的大多数 google 联系人都没有照片。但是,当我在联系人数据库中查询照片时,它仍会为它们返回 content://com.android.contacts/contacts/657/photo 形式的 URI(格式相同至于确实有照片的联系人。

然后,当我尝试使用 bdg.setImageURI(pic); 将照片分配给 QuickContactBadge 时,它​​基本上将其设置为空白图片,并记录一条静默的 INFO 消息,说明:

INFO/System.out(3968): resolveUri failed on bad bitmap uri: 
content://com.android.contacts/contacts/657/photo

我需要知道我该怎么做
a)验证 URI
b)捕获上面的INFO消息
c) 查询 imageview/badge 以查看它是否找到了有效图像

这样我就可以为这些联系人分配我的“无图像”图像。
我该怎么做呢?

编辑 20110812.0044

我已经尝试按照 Laurence 的建议(他已将其删除)将其添加到我的代码中:

// rv is my URI variable
if(rv != null) {
Drawable d = Drawable.createFromPath(rv.toString());
if (d == null) rv = null;
}

虽然 google 联系人现在得到我的“无图像”图像,...所有其他联系人也是如此,包括那些确实实际上有图像的联系人。

最佳答案

好的,我在浏览了 ImageView 源代码后想出了如何做到这一点。它实际上是使用 QuickContactBadge 自己的方法,但如果有必要,总是可以提取 the relevant code from the Badge/ImageView control here .

设置 QCB 的图像后,我检查它的可绘制对象是否为空,而不是自己尝试(根据劳伦斯的建议)。这样效果更好,因为 ImageView 小部件实际上使用了大量的检查代码。

这是我的最终代码:

bdg.setImageURI(pic);
if(bdg.getDrawable() == null) bdg.setImageResource(R.drawable.contactg);

这完全符合我的希望和期望。

关于android - 如何验证图像 URI 在 Android 中是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7035500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com