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

NicoMinsk picture NicoMinsk · Aug 17, 2010 · Viewed 17k times · Source

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

Answer

ekawas picture ekawas · Aug 17, 2010
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;
}