adool
adool

Reputation: 15

how can i get phone number of selected contact

c.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Intent i = new Intent(ContactsContract.Contacts.CONTENT_TYPE);
            Intent i = new Intent(Intent.ACTION_PICK);
            i.setType(ContactsContract.Contacts.CONTENT_TYPE);
            startActivityForResult(i, CONTACT_PICKER_RESULT); }
        });
}
public void onActivityResult(int requestCode ,int resultCode ,Intent data) {
    if ((requestCode == CONTACT_PICKER_RESULT) && (resultCode == RESULT_OK)) {

    }

}

This code contains the intent opens the contacts but I need if select contact take a contact phone number then set it to string

Upvotes: 0

Views: 1254

Answers (2)

noam aghai
noam aghai

Reputation: 1446

You can try this.

@Override
public void onActivityResult(int reqCode, int resultCode, Intent data){
    super.onActivityResult(reqCode, resultCode, data);

    if(reqCode == this.pickContact){
        if (resultCode == Activity.RESULT_OK) {
            Log.d("ContactsH", "ResOK");
            Uri contactData = data.getData();
            Cursor contact =  getContentResolver().query(contactData, null, null, null, null);

            if (contact.moveToFirst()) {
                String name = contact.getString(contact.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                // TODO Whatever you want to do with the selected contact's name.

                ContentResolver cr = getContentResolver();
                Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
                        "DISPLAY_NAME = '" + name + "'", null, null);
                if (cursor.moveToFirst()) {
                    String contactId =
                            cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
                    //
                    //  Get all phone numbers.
                    //
                    Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);
                    while (phones.moveToNext()) {
                        String number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        int type = phones.getInt(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
                        switch (type) {
                            case ContactsContract.CommonDataKinds.Phone.TYPE_HOME:
                                // do something with the Home number here...
                                break;
                            case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE:
                                // do something with the Mobile number here...
                                Log.d("ContactsH", number);
                                break;
                            case ContactsContract.CommonDataKinds.Phone.TYPE_WORK:
                                // do something with the Work number here...
                                break;
                        }
                    }
                    phones.close();
                }
                cursor.close();
            }
        }
    }else{
        Log.d("ContactsH", "Canceled");
    }
}

That works for me.

Upvotes: 0

Xplouder
Xplouder

Reputation: 148

Check this solution: How to call Android contacts list? Its pretty much what you need to do but instead name you should search the number with the cursor.

PS: Next time search better, there is alot of people asking it.

Upvotes: 2

Related Questions