我一直试图获得一个联系人的昵称现在几个小时,仍然无法让他们工作,我被告知他们在电话号码等不同的表.但我不知道如何访问它们.
我最接近的是这个......
Cursor cursor = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts._ID +" = ?", new String[]{String.valueOf(recordId)}, null);
while (cursor.moveToNext()) {
Cursor nickname = context.getContentResolver().query( ContactsContract.Data.CONTENT_URI, null, ContactsContract.CommonDataKinds.Nickname.CONTACT_ID +" = "+ recordId, null, null);
while (nickname.moveToNext()) {
try {
String nicknameName = nickname.getString(nickname.getColumnIndex(ContactsContract.CommonDataKinds.Nickname.NAME));
String nicknameType = nickname.getString(nickname.getColumnIndex(ContactsContract.CommonDataKinds.Nickname.TYPE));
switch (Integer.valueOf(nicknameType)) {
case 1: nicknameType = "TYPE_HOME"; break;
}
list.add(new KeyValue("Nickname:" + nicknameType, nicknameName));
} catch (Exception e) { continue; }
}
nickname.close();
}
Run Code Online (Sandbox Code Playgroud)
这将获得联系人的所有数据以及类型,例如:Thomas Owers 1这一切都很好,但它没有给我什么数据,所以它给出了电子邮件,电话,姓名,昵称,但我无法区分它们.
谢谢,任何帮助都会有所帮助!:)
经过几个小时的互联网搜索,我得到了昵称......
ArrayList<KeyValue> list = new ArrayList<KeyValue>();
Cursor cursor = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts._ID +" = ?", new String[]{String.valueOf(recordId)}, null);
while (cursor.moveToNext()) {
String where = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
String[] params = new String[] {String.valueOf(recordId), ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE};
Cursor nickname = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, where, params, null);
while (nickname.moveToNext()) {
String nicknameName = nickname.getString(nickname.getColumnIndex(ContactsContract.CommonDataKinds.Nickname.NAME));
String nicknameType = nickname.getString(nickname.getColumnIndex(ContactsContract.CommonDataKinds.Nickname.TYPE));
switch (Integer.valueOf(nicknameType)) {
case 1: nicknameType = "Default"; break;
case 2: nicknameType = "OtherName"; break;
case 3: nicknameType = "MaidenName"; break;
case 4: nicknameType = "ShortName"; break;
case 5: nicknameType = "Initials"; break;
}
list.add(new KeyValue("Nickname:" + nicknameType, nicknameName));
}
nickname.close();
}
return list;
Run Code Online (Sandbox Code Playgroud)
这段代码获得了昵称!:)
| 归档时间: |
|
| 查看次数: |
2425 次 |
| 最近记录: |