访问联系人数据
问题描述:
唉,我的电话簿中有大约500个联系人,并且由于某些原因,他们与雷鸟同步后,显示名称是随机最后一个,第一个......第一个最后一个。所以我想我会把一个快速的小部件放在一起,只是重新做我的显示名称,以便第一。我使用的代码如下,但我没有得到最后/第一个值。游标中的键存在(data1,data2),但值分别为“1”和null。有任何想法吗?访问联系人数据
Cursor cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext() != false) {
String id = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String fname = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
String lname = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
if (lname != null && lname.length() > 0) {
String sDName = lname + "," + fname;
ContentValues values = new ContentValues();
values.put(ContactsContract.Contacts.DISPLAY_NAME, sDName);
getContentResolver().update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Contacts._ID+"=", new String[] {id});
}
}
答
ContactsContract.Data包含了所有不同类型的等在共享的表像邮政地址,电话号码,电子邮件,网站,信息历年展览。
你必须过滤掉包含您感兴趣的信息的行
在查询中,添加一个WHERE子句:
query(ContactsContract.Data.CONTENT_URI, Data.MIMETYPE + "=?",
new String[]{StructuredName.CONTENT_ITEM_TYPE}, null, null);
外观极好这把我带到了我需要去的地方。 – user438431 2010-09-19 15:04:15