0

我正在开发一个应用程序,在该应用程序中我正在使用 startactivity 结果并在我的应用程序中访问默认的 android 电话簿,之后在选择一个联系人时,我得到了姓名,所选联系人的一个电话号码。如果任何联系人拥有多个电话号码以及电话号码类型(如工作、手机等),我想检索多个电话号码。请帮助我,任何帮助将不胜感激。

4

2 回答 2

2

试试这个,因为这对我有用:

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

然后在 onActivityResult 中执行以下操作:

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();
                }
}
于 2013-05-06T12:00:55.227 回答
0

尝试这个

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);
于 2013-05-06T12:00:38.920 回答