开发者

Android get a cursor only with contacts that have an email listed

开发者 https://www.devze.com 2023-02-19 14:50 出处:网络
Friends I want Contacts which have email and also sort in ascending order.. any one know how to get this list and sort..

Friends I want Contacts which have email and also sort in ascending order..

any one know how to get this list and sort..

Please help me and thanks in advance.

I am using this code.

        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);
        cEmai开发者_开发问答l.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();
        }


Try this:

/**
 * @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);
}


Use this query :

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*/);

0

精彩评论

暂无评论...
验证码 换一张
取 消