Search code examples
androidcontactsbroadcastreceiver

Android : Check phone number present in Contact List ? (Phone number retrieve from phone call)


I make a BroadcastReceiver to receive Phone number of the person who call me

<intent-filter>
<action
    android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
  1. How to check if the phone number receive is on my contact list ?
    Do you have a tip to know if this phone number exist on contact list with out loading contact list ?
    I don't want more information, just if this phone number exist.

  2. If it's not possible, and I must load contact list, how to do it on BroadcastReceiver ?
    When I try to do getContentResolver, it's not working because I'm on BroadcastReceiver and not inside Activity...

Thanks for your help


Solution

  • public boolean contactExists(Context context, String number) {
        // number is the phone number
        Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
        String[] mPhoneNumberProjection = { PhoneLookup._ID, PhoneLookup.NUMBER, PhoneLookup.DISPLAY_NAME };
        Cursor cur = context.getContentResolver().query(lookupUri, mPhoneNumberProjection, null, null, null);
        try {
            if (cur.moveToFirst()) {
                cur.close();
                return true;
            }
        } finally {
            if (cur != null)
                cur.close();
            }
       }
    
       return false;
    }