【发布时间】:2012-11-29 04:10:03
【问题描述】:
我正在尝试查询联系人的显示名称:
@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 联系人返回空。
现在我没有想法。有没有人遇到过这种情况?
提前致谢。
【问题讨论】:
-
我遇到了同样的问题。找到任何提示?
标签: android contacts contactscontract