最喜欢的联系人fr0m联系db

时间:2014-02-13 09:35:28

标签: java android android-contentprovider

我想检索所有联系人,然后根据是否加星标将它们放入不同的arraylist中。 我试图检查所有联系人,并根据他们是否加星标分别单独显示它们

  contactId=8333;
 Uri uri = ContactsContract.Contacts.CONTENT_URI;

    String[] projection = new String[] { ContactsContract.Contacts._ID,
    ContactsContract.Contacts.DISPLAY_NAME,
    ContactsContract.Contacts.PHONETIC_NAME };
    String selection = ContactsContract.Contacts._ID + " = ?";
    Cursor cur= mContext.getContentResolver().query(uri, projection, selection,
                new String[] {contactId}, null);
   if (cur != null && cur.moveToFirst() && cur.getCount() > 0) {

int idIndex = cur.getColumnIndex(ContactsContract.Contacts._ID);

int displayNameIndex = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);

int phoneticNameIndex = cur.getColumnIndexOrThrow(ContactsContract.Contacts.PHONETIC_NAME);

do {

    String id = cur.getString(idIndex);
    String name = cur.getString(displayNameIndex);
    String star=cur.getString(cur.getColumnIndex(ContactsContract.Data.STARRED));
    String value=cur.getString(cur.getColumnIndex(ContactsContract.Contacts.STARRED));

                        } while (cur.moveToNext());
        }   

变量星始终为null,在检索变量值时,它会引发异常。

有人可以告诉我在检索所有联系人数据后如何知道他们的联系人是否已加星标?

2 个答案:

答案 0 :(得分:2)

如果您想从光标请求STARRED列,则应将其包含在projection中。

答案 1 :(得分:1)

我将与Smutje一起回答,你需要将STARRED添加到投影中,除非我们错误地理解你的问题。