简体   繁体   中英

Getting multiple phone numbers from selected contact

I am developing an application in which i am using startactivity result and accessing default android phonebook in my application, after that on selecting one contact i am getting name, one phone number of the selected contact. I want to retrieve multiple phone numbers if any of the contacts have it and type of phone numbers like work, mobile etc. please help me in this, Any help would be appreciated.

try this as this works for me:

Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
            startActivityForResult(intent, AppConstants.PICK_CONTACT);

then in onActivityResult do the following:

Cursor cursor = null;
            String phoneNumber = "", primaryMobile = "";

            List<String> allNumbers = new ArrayList<String>();
            int contactIdColumnId = 0, phoneColumnID = 0, nameColumnID = 0;
            try {
                Uri result = data.getData();
                Utils.printLog(TAG, result.toString());
                String id = result.getLastPathSegment();
                cursor = getContentResolver().query(Phone.CONTENT_URI, null, Phone.CONTACT_ID + "=?", new String[] { id }, null);
                contactIdColumnId = cursor.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID);
                phoneColumnID = cursor.getColumnIndex(Phone.DATA);
                nameColumnID = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);

                if (cursor.moveToFirst()) {
                    while (cursor.isAfterLast() == false) {
                        idContactBook = cursor.getString(contactIdColumnId);
                        displayName = cursor.getString(nameColumnID);
                        phoneNumber = cursor.getString(phoneColumnID);

                        if (phoneNumber.length() == 0)
                            continue;

                        int type = cursor.getInt(cursor.getColumnIndex(Phone.TYPE));
                        if (type == Phone.TYPE_MOBILE && primaryMobile.equals(""))
                            primaryMobile = phoneNumber;
                        allNumbers.add(phoneNumber);
                        cursor.moveToNext();
                    }
                } else {
                    // no results actions
                }
            } catch (Exception e) {
                // error actions
            } finally {
                if (cursor != null) {
                    cursor.close();
                }
}

try this

Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, personId);
Uri phonesUri = Uri.withAppendedPath(personUri, People.Phones.CONTENT_DIRECTORY);
String[] proj = new String[] {Phones._ID, Phones.TYPE, Phones.NUMBER, Phones.LABEL}
Cursor cursor = contentResolver.query(phonesUri, proj, null, null, null);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM