正直Javaにはあまり詳しくないのですが、自分の忘備録のために記録しておこうと思います。
シンプルに、電話番号を引数にして、連絡帳に存在するかをチェックするだけのコードです。
サンプルを切り貼りしたコードなので果たしてこれがベストなのかもわかりません。最初はContactsAPIをつかってサーチしようと思ったのですが、PhoneLookupしたほうが良いというので書き直しました。
private boolean hasPhoneNumber( String phoneNumber){
boolean result = false;
String name = null;
ContentResolver contentResolver = getContentResolver();
String[] projection = new String[] {
ContactsContract.PhoneLookup.DISPLAY_NAME,
ContactsContract.PhoneLookup._ID};
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
Cursor cursor = contentResolver.query(uri, projection, null, null, null);
if (cursor.moveToFirst()) {
name = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME));
result = true;
} else {
result = false;
}
return result;
}