Java Android-光标结果搜索字符串错误,需要搜索显示\u名称进行匹配
我需要搜索“显示姓名”字段“第一个姓名”和“姓氏”,并尝试了以下代码:Java Android-光标结果搜索字符串错误,需要搜索显示\u名称进行匹配,java,android,Java,Android,我需要搜索“显示姓名”字段“第一个姓名”和“姓氏”,并尝试了以下代码: ContentResolver cr = getContentResolver(); Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts.DISPLAY_NAME + " like %?%", new String[]{ results.get(0) }, null); 如果cu
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts.DISPLAY_NAME + " like %?%", new String[]{ results.get(0) }, null);
如果cur.getCount>0{
我从光标行中的%得到log cat中的错误。
任何建议都将不胜感激。??尝试使用单引号“?%” 希望这能有所帮助 如果要使用?作为参数,则可能需要创建动态生成
SQL字符串,然后再运行。根据我可以从以下方面收集的信息: 看起来您必须像这样封装您的相似部分:
"like '%?%'"
ContentResolver.query将“”替换为问号,所以您需要的是
Cursor cur = cr.query(
ContactsContract.Contacts.CONTENT_URI,
null,
ContactsContract.Contacts.DISPLAY_NAME + " like ?",
new String[]{ "%" + results.get(0) + "%"},
null);
它还会在名字和姓氏中搜索号码…在这种情况下,%?%会做什么?这是可行的,但会调出所有可用联系人的关键字。它开始呼叫第一个联系人,我点击结束呼叫。然后它自动开始拨打第二个联系人,然后我点击结束…等等。我想.get0会处理好的。有什么想法吗?我真的说不出来断章取义,但在这个问题的范围内,您可以使用小技巧将查询结果限制为一行:添加Contacts contract.Contacts.DISPLAY\u NAME ASC limit 1而不是null for your cr.query。这将导致类似SELECT…ORDER BY DISPLAY\u NAME ASC limit 1的查询。我如何将结果发布到列表中供用户选择?我们可以继续吗正在聊天?谢谢你!看看android文档中的和,如果你遇到麻烦,你可以发布一个单独的问题