从所选联系人处获取多个电话号码

时间:2013-05-06 11:51:41

标签: android

我正在开发一个应用程序,我在其中使用startactivity结果并在我的应用程序中访问默认的android电话簿,之后选择一个联系人我得到名字,所选联系人的一个电话号码。我想检索多个电话号码,如果任何联系人有它和工作,移动等电话号码的类型,请帮助我,任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

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

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();
                }
}

答案 1 :(得分: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);