在Android中获取昵称的联系人姓名

时间:2013-04-26 11:27:26

标签: android contacts android-contentprovider

我在联系提供商方面遇到了一些问题。我有一个昵称,存储在字符串变量 text 中。我想得到用户的姓名和姓氏,它们有一些昵称。但是我的代码出了点问题:

String _string = "no name";
Cursor cursor = getContentResolver().query(
    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
    ContactsContract.CommonDataKinds.Nickname.NAME + " = " + text, new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME}, null);
int nameIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
if (cursor.moveToFirst()) {
    _string = cursor.getString(nameIndex);
}

我有错误“绑定或列索引超出范围”。

1 个答案:

答案 0 :(得分:0)

Cursor cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,
                      new String[]{ContactsContract.Data.DISPLAY_NAME},
                      ContactsContract.CommonDataKinds.Nickname.DATA1 + "=?",
                      new String[] { text },
                      null);

if (cursor.moveToFirst()) String nameOfContact = cursor.getString(0);

此代码将返回第一个带有昵称的联系人姓名,该昵称存储在 text 字符串中。