Есть ли простой способ проверить, является ли входящий звонящий контакт в Android?

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

Есть ли способ сделать это, не проходя через ContentProvider Contacts?

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

В любом случае, разрешение номера на имя (pre 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(); } 

Вот код для 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(); }