学习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) {
}
答案 0 :(得分:0)
问题在于您的第二行代码应该是:
.withSelection(
ContactsContract.Contacts.DISPLAY_NAME + " = ?",
new String[] {name}
)
为了解释,withSelection方法有两个参数,选择字符串和数组selectionArgs,它们在查询编译期间被替换为选择字符串。因此,在此示例中,?
的值为name
。文本限定符(单引号)会同时自动嵌入,因此无需额外工作