Is there a simple way to check if an incoming caller is a contact in Android?
android, contacts, telephony
Solution
The phone app uses the contacts `ContentProvider` too; I'm not sure why you would want to avoid that. Besides, it's the only publicly-accessible way of accessing that information.
Resolving a number to a name (pre 2.0, in this case) is simple enough anyway:
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();
}
Problem
When an Android phone receives a call it automatically checks if the call exists in its own contact database. I was wondering if there is a simple way to access that information. I have a `PhoneStateListener` that performs certain actions during a ringing state, and I want to check if the incoming caller is in the contacts list. Is there a way to do this without going through the Contacts `ContentProvider`?