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

eid*_*lon 12 validation android uri

我正在建立自己的联系人选择器,因为我需要多选支持.一切都运行正常,除了联系人图片的一个小问题.

对于没有图像的联系人,我显示的是"无图像"图像.这适用于手机通讯录中的联系人.我有一个问题,但是当涉及到我的谷歌联系人的图像.

我的大部分谷歌联系人都没有照片.然而,当我查询照片的联系人数据库,它仍然会返回一个URI为他们的形式content://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
Run Code Online (Sandbox Code Playgroud)

我需要知道如何
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;
}
Run Code Online (Sandbox Code Playgroud)

虽然谷歌联系人现在让我"没有图像"的形象,...所以做所有的其他联系人,包括那些其实有图像.

eid*_*lon 13

好的,我在浏览ImageView源代码后想出了如何做到这一点.它实际上是使用QuickContactBadge自己的方法,但如果需要,可以始终从Badge/ImageView控件中提取相关代码.

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

这是我的最终代码:

bdg.setImageURI(pic);
if(bdg.getDrawable() == null) bdg.setImageResource(R.drawable.contactg);
Run Code Online (Sandbox Code Playgroud)

这完全像我希望和期待的那样完美.