Найти контакты с указанным отображаемым именем - PullRequest
0 голосов
/ 08 октября 2011

Обучение Android Я пытаюсь найти контакты с помощью селектора DISPLAY_NAME. Мне нужно найти все контакты с указанным именем. Все идет хорошо, используя стандартный запрос, но падает, когда я использую ContentProviderOperation. Я не понимаю некоторые особенности. При отладке я вижу исключение: пустые значения. Но какие значения я должен вставить туда? Спасибо.

    op.add(ContentProviderOperation.newAssertQuery(ContactsContract.Contacts.CONTENT_URI)
      .withSelection(ContactsContract.Contacts.DISPLAY_NAME + " = '" + name + "'", new String[] {ContactsContract.Contacts._ID})
      .build());        
    try {
        result = getContentResolver().applyBatch(ContactsContract.AUTHORITY, op);
    } catch (Exception e) {

    }       

1 Ответ

0 голосов
/ 09 октября 2011

проблема с вашей второй строкой кода, которая должна выглядеть так:

.withSelection(
    ContactsContract.Contacts.DISPLAY_NAME + " = ?",
    new String[] {name}
)

Для пояснения, метод withSelection принимает два параметра: строку выбора и массив selectionArgs, которые подставляются в строку выбора во время компиляции запроса. Таким образом, в этом примере ? заменяется значением name. Текстовые квалификаторы (одинарные кавычки) автоматически вставляются одновременно, поэтому никаких дополнительных усилий не требуется

...