Считайте номера телефона всех контактов в андроиде

Я использую этот код для получения всех контактных лиц и номеров телефона:

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

Однако это только возвратит основное число для каждого контакта, но я хочу получить вторичные числа также. Как я могу сделать это?

68
задан EJoshuaS - Reinstate Monica 2 May 2018 в 14:33
поделиться

3 ответа

Вы можете прочитать все телефонные номера, связанные с контактом, следующим образом:

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 .

30
ответ дан 24 November 2019 в 13:59
поделиться

Таким же образом просто получите их другие номера, используя другие ссылки "Люди"

People.TYPE_HOME
People.TYPE_MOBILE
People.TYPE_OTHER
People.TYPE_WORK
2
ответ дан 24 November 2019 в 13:59
поделиться

На случай, если это поможет, у меня есть пример, который использует API ContactsContract, чтобы сначала найти контакт по имени, а затем он перебирает детали в поисках конкретные типы номеров:

Как использовать ContactsContract для получения номеров телефонов и адресов электронной почты

14
ответ дан 24 November 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: