查找具有指定显示名称的联系人

时间:2011-10-08 16:06:46

标签: android contacts

学习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 :(得分:0)

问题在于您的第二行代码应该是:

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

为了解释,withSelection方法有两个参数,选择字符串和数组selectionArgs,它们在查询编译期间被替换为选择字符串。因此,在此示例中,?的值为name。文本限定符(单引号)会同时自动嵌入,因此无需额外工作