title: Android - Find a contact by display name
body: <p>I'm trying to find a contact by display name. The goal is to open this contact and add more data to it (specifically more phone numbers), but I'm struggling to even find the contact I want to update.</p>
  
  <p>This is the code I'm using:</p>
  
  <pre><code>    public static String findContact(Context context) {
  
      ContentResolver contentResolver = context.getContentResolver();
      Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI;
      String[] projection = new String[] { PhoneLookup._ID };
      String selection = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " = ?";
      String[] selectionArguments = { "John Johnson" };
      Cursor cursor = contentResolver.query(uri, projection, selection, selectionArguments, null);
  
      if (cursor != null) {
          while (cursor.moveToNext()) {
              return cursor.getString(0);
          }
      }
      return "John Johnson not found";
  }
  </code></pre>
  
  <p>I do have a contact called "John Johnson", but the method always returns "not found". I also tried searching for a contact with just one name, so that makes no difference.</p>
  
  <p>I suspect that it's something wrong with the uri, selection or selection arguments, because I couldn't find any example online of searching for contacts with a given display name, and it seems display name is a special kind of information, different from for example a phone number.</p>
  
  <p>Any ideas how I can achieve to find John Johnson?</p>
  
  <hr>
  
  <p><strong>UPDATE: I found out how to find a contact by display name:</strong></p>
  
  <pre><code>        ContentResolver contentResolver = context.getContentResolver();
      Uri uri = Data.CONTENT_URI;
      String[] projection = new String[] { PhoneLookup._ID };
      String selection = StructuredName.DISPLAY_NAME + " = ?";
      String[] selectionArguments = { "John Johnson" };
      Cursor cursor = contentResolver.query(uri, projection, selection, selectionArguments, null);
  
      if (cursor != null) {
          while (cursor.moveToNext()) {
              return cursor.getString(0);
          }
      }
      return "John Johnson not found";
  </code></pre>
  
  <p>This code returns the contact id of the first contact with display name "John Johnson". In my original code I had the wrong uri and the wrong selection in my query.</p>