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)
这完全像我希望和期待的那样完美.
| 归档时间: |
|
| 查看次数: |
14939 次 |
| 最近记录: |