【发布时间】:2013-01-20 20:26:41
【问题描述】:
我有这个代码来获取联系人的名字和姓氏:
uri = ContactsContract.Data.CONTENT_URI;
Cursor curName = getContentResolver().query(uri, null, ContactsContract.Data.CONTACT_ID +" = "+ contactId, null, null);
if (curName.getCount() > 0){
curName.moveToFirst();
String nameGiven = curName.getString(curName.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
String nameFamily = curName.getString(curName.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
log += nameGiven + ", " + nameFamily + ": ";
}
我只有一个联系人,所以我不需要循环。 在 2.3.5 设备上它工作正常,返回正确的名称。但在 4.0.4 设备上,这两个字段都返回 null,但如果请求显示名称,它会正确提供。
可能是什么问题?
【问题讨论】:
-
您是否测试过打印所有内容?其他设备可能将数据保存在错误的位置。或者尝试使用 RawContacts。遗憾的是,每种设备处理联系人的方式存在许多差异。
-
我已尝试打印所有表格,所有数据# 均为空。我会尝试使用 RawContacts。