Android仅为列出电子邮件的联系人获取游标

时间:2011-03-24 04:30:23

标签: android contact

朋友我想要的联系人有电子邮件,也按升序排序..

任何人都知道如何获取此列表并进行排序..

请帮助我,并提前致谢。

我正在使用此代码。

        MatrixCursor matCur = new MatrixCursor(new String[] { Contacts._ID,
                Contacts.DISPLAY_NAME, "photo_id", "starred" });
        Cursor cEmail = WP7Main.this.managedQuery(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        cEmail.moveToFirst();
        if (cEmail.moveToFirst()) 
        {
            // String name =
            // cursor.getString(cursor.getColumnIndexOrThrow(People.NAME));

            String contactId = cEmail.getString(cEmail.getColumnIndex(ContactsContract.Contacts._ID));

            Cursor emails = WP7Main.this.getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
            null,ContactsContract.CommonDataKinds.Email.CONTACT_ID+ " = " + contactId, null, null);

            String emailAddress = "";
            while (emails.moveToNext()) 
            {
                // This would allow you get several email addresses

                if (emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)) != null)
                {
                    String[] columnValues = {
                            cEmail.getString(cEmail
                                    .getColumnIndex("_id")),
                                    cEmail.getString(cEmail
                                    .getColumnIndex("display_name")),
                                    cEmail.getString(cEmail
                                    .getColumnIndex("photo_id")),
                                    cEmail.getString(cEmail
                                    .getColumnIndex("starred")) };
                    matCur.addRow(columnValues);

                }

            }
            emails.close();
        }

2 个答案:

答案 0 :(得分:2)

试试这个:

/**
 * @return A managed cursor of email contacts for the given activity.
 */
public static Cursor buildFilteredEmailCursor(Activity activity) {
    final String my_sort_order = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
    String my_selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'";
    String[] eproj = new String[]{
        ContactsContract.Contacts._ID,
        ContactsContract.Contacts.DISPLAY_NAME,
        ContactsContract.CommonDataKinds.Email.DATA};
    Uri uri = android.provider.ContactsContract.CommonDataKinds.Email.CONTENT_URI;
    return activity.managedQuery(uri, eproj, my_selection, null, my_sort_order);
}

答案 1 :(得分:1)

使用此查询:

Cursor c = getContentResolver().query(Data.CONTENT_URI,
        new String[]{Data.CONTACT_ID, Data.DISPLAY_NAME, Email.ADDRESS},
        Data.MIMETYPE + "=?", new String[] {Email.CONTENT_TYPE}, Data.DISPLAY_NAME /* use Email.ADDRESS if you want to sort it using that*/);