Я использую этот код для получения всех контактных лиц и номеров телефона:
String[] projection = new String[]
{
People.NAME,
People.NUMBER
};
Cursor c = ctx.getContentResolver().query(People.CONTENT_URI, projection, null, null, People.NAME + " ASC");
c.moveToFirst();
int nameCol = c.getColumnIndex(People.NAME);
int numCol = c.getColumnIndex(People.NUMBER);
int nContacts = c.getCount();
do
{
// Do something
} while(c.moveToNext());
Однако это только возвратит основное число для каждого контакта, но я хочу получить вторичные числа также. Как я могу сделать это?
Вы можете прочитать все телефонные номера, связанные с контактом, следующим образом:
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);
Обратите внимание, что в этом примере (как и в вашем) используется устаревший контакты API. Начиная с Eclair, он был заменен API ContactsContract .
Таким же образом просто получите их другие номера, используя другие ссылки "Люди"
People.TYPE_HOME
People.TYPE_MOBILE
People.TYPE_OTHER
People.TYPE_WORK
На случай, если это поможет, у меня есть пример, который использует API ContactsContract, чтобы сначала найти контакт по имени, а затем он перебирает детали в поисках конкретные типы номеров:
Как использовать ContactsContract для получения номеров телефонов и адресов электронной почты