如何验证图像URI在Android中有效?

前端之家收集整理的这篇文章主要介绍了如何验证图像URI在Android中有效?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在建立自己的联系人选择器,因为我需要多选支持.一切都正常,除了联系人图像的一个小问题.

对于没有图像的联系人,我显示“无图像”图像.这对于手机通讯录中的联系人来说是非常正常的.不过,当涉及到我的谷歌联系人的图像时,我有一个问题.

我的大多数Google联系人都没有照片.但是,当我查询联系人数据库中的照片时,它仍然返回一个URI形式的内容://com.android.contacts/contacts/657/photo(其格式与联系人有一样的照片.

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

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

我需要知道我也可以
a)验证URI或
b)抓住上面的INFO消息
c)查询imageview /徽章,查看是否找到有效的图像

所以我可以将这些联系人分配给我的“无图像”图像.
我该怎么做呢?

编辑20110812.0044

我已经尝试根据劳伦斯的建议(他已被删除)将其添加到我的代码中:

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

而谷歌联系人现在得到了我的“没有图像”图像,所以其他所有联系人,包括其实有图像的联系人.

解决方法

好的,我想到了如何通过ImageView源代码进行处理.它实际上是使用QuickContactBadge自己的方法,但如有必要,可以随时提取 the relevant code from the Badge/ImageView control here.

在设置QCB的图像后,我检查它的drawable是否为null,而不是尝试我自己的(根据Laurence的建议).这样做效果更好,因为ImageView小部件实际上使用了一整套检查代码.

这是我的最终代码

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

这是完美的,因为我希望和期待.

猜你在找的Android相关文章