访问Android的联系人数据

时间:2013-05-15 20:41:34

标签: android contacts

如果我正在为联系人的字段分配值,例如昵称;

.withValue(Nickname.NAME, "Mr. Incredible")

根据http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Nickname.html

存储在DATA1列中

然而,如果我使用SipAddress.SIP_ADDRESS()添加SIP地址,它的值也会分配给列DATA1。我如何区分这两者?我对如何访问特定于联系人的字段感到困惑,我在Android参考资料中找不到解释。

我特意使用

SimpleCursorAdapter(getActivity(),
                        R.layout.contact_list, null, new String[] {
                        SipAddress.DISPLAY_NAME, SipAddress.SIP_ADDRESS, Nickname.NAME},
                        new int[] {
                        R.id.text1, R.id.text2, R.id.text3}, 0);

2 个答案:

答案 0 :(得分:1)

请尝试,

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

    cursor.moveToFirst();
    String Nickname = cursor.getString(0);
}
catch (Exception e) {
}

答案 1 :(得分:0)

是的,它使用字符串ContactsContract.DataColumns.DATA1保存在SIP_ADDRESS中。这可以帮助你ContactsContract.CommonDataKinds.SipAddress

快乐的编码!