Есть ли простой способ проверить, является ли входящий абонент контактом в Android? - PullRequest
6 голосов
/ 03 февраля 2010

Когда телефон Android получает вызов, он автоматически проверяет, существует ли этот вызов в его собственной базе контактов.Мне было интересно, если есть простой способ получить доступ к этой информации.У меня есть PhoneStateListener, который выполняет определенные действия во время состояния звонка, и я хочу проверить, есть ли входящий абонент в списке контактов.

Есть ли способ сделать это, не проходя через Контакты ContentProvider * * 1005

Ответы [ 2 ]

5 голосов
/ 03 февраля 2010

Приложение телефона тоже использует контакты ContentProvider; Я не уверен, почему вы хотели бы избежать этого. Кроме того, это единственный общедоступный способ доступа к этой информации.

Преобразование числа в имя (в данном случае до 2.0) достаточно просто:

Uri uri = Uri.withAppendedPath(Phones.CONTENT_FILTER_URL, Uri.encode(number));

String name = null;
Cursor cursor = context.getContentResolver().query(uri, 
                    new String[] { Phones.DISPLAY_NAME }, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
    name = cursor.getString(cursor.getColumnIndex(Phones.DISPLAY_NAME));
    cursor.close();
}
3 голосов
/ 24 июля 2010

Вот код для 2.0 и выше

    Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
    Cursor cursor = resolver.query(uri, new String[]{PhoneLookup.DISPLAY_NAME}, null, null, null);        

    if (cursor != null && cursor.moveToFirst()) {
        String name = cursor.getString(0);
        cursor.close();
    } 
...