我正在尝试查询联系人的显示名称:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQ_CODE_PICK_CONTACT:
if (resultCode == Activity.RESULT_OK) {
Uri contactUri = data.getData();
ContentResolver cr = getActivity().getContentResolver();
Cursor c = cr.query(contactUri, null, null, null, null);
if (c != null && c.moveToFirst()) {
//get the contact name
}
}
break;
}
}
现在问题来了:
对于某些联系人,光标返回为空,我不知道为什么。我检查了 的值contactUri
,它看起来像: content://com.android.contacts/data/3032
对于我尝试过的所有类型的联系人 - facebook、google、电话等,Uri 看起来都一样。
对于某些联系人,光标会返回一个结果,这很好,我可以提取名称。但是对于其他人来说,即使 ContentUri 完全相同,它也是空的,它起源于 Intent.getData()。
以下是一些可能与这个奇怪问题有关的事实:
所有具有空光标的联系人都是 Facebook 联系人。Uri 看起来像上面。
并非所有 facebook 联系人都会导致此问题:我有 HTC One X,如果操作系统发现它们之间存在关系,我可以在电话簿上“链接”联系人(例如,如果它检测到 gmail 帐户和 facebook 帐户的相似电话号码,它建议我在它们之间“链接”)。只有未“链接”的 facebook 联系人返回空。
现在我没有想法。有没有人遇到过这个?
提前致谢。