taran mahal
taran mahal

Reputation: 1088

Unable to fetch correct email while contact name and number are correct

i am new to android, i want to get email of existing contact in my contact list every time i use the below code i could not get the exact email of contact but any random email. please help me to correct this code i will be very thankful.

 public void fetchingContacts(Context context) {

            Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
            ContentResolver cr = context.getContentResolver();
            Cursor crsr = cr.query(uri, null, null, null, null);

            crsr.moveToFirst();

            if (crsr.getCount() > 0) {
                while (crsr.moveToNext()) {
                    ID = crsr
                            .getString(crsr
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
                    id = crsr.getString(crsr.getColumnIndex(BaseColumns._ID));
                    NAME = crsr
                            .getString(crsr
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                    NUMBER = crsr
                            .getString(crsr
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                    arylist_contact_id.add(ID);
                    arylist_all_number.add(NUMBER);
                    arylist_all_names.add(NAME);
                    // ////////////



                    Cursor emailCur = cr.query(
                            ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                            null, ContactsContract.CommonDataKinds.Email.CONTACT_ID
                                    + " = " + id, null, null);

                    while (emailCur.moveToNext()) {
                        email = emailCur
                                .getString(emailCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));

                        Log.v("fetchingEMAIL ---  ", email);

                    }
                    emailCur.close();


                    Log.v("IN do while :: name and number ", ID + " , id :" + id
                            + "  " + NAME + " : " + NUMBER + "  :  " + email);
                } 

            }
            crsr.close();
        }

Upvotes: 1

Views: 129

Answers (2)

Priya
Priya

Reputation: 1803

Try this

      Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
    if (cur.getCount() > 0) {
        while (cur.moveToNext()) {
            String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
            Cursor cur1 = cr.query( 
                    ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                    ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
                            new String[]{id}, null); 
            while (cur1.moveToNext()) { 
                //to get the contact names
                String name=cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                Log.e("Name :", name);
                String email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                Log.e("Email", email);

                }
            } 
            cur1.close();
        }

Upvotes: 0

Venkatesh S
Venkatesh S

Reputation: 5492

            Cursor emailCur = cr.query(
                    ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                    null,
                    ContactsContract.CommonDataKinds.Email.CONTACT_ID
                            + " = ?", new String[] { id }, null);
            while (emailCur.moveToNext()) {
            String  email = emailCur
                        .getString(emailCur
                                .getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS));

            }
            emailCur.close();

Above is thew query which helps to fetch email correctly my friend it works for me...hope try it .

Upvotes: 1

Related Questions