【发布时间】:2016-11-07 03:16:39
【问题描述】:
我想像 android native dialer 或 TrueCaller dialer 那样实现 T9 搜索。到目前为止,我取得的成就是:-
将击键转换为字符串模式,例如,如果我在拨号器上按 2,它会给我 - "abc" "ac" "ca" 等等
现在我做了一个查询
字符串选择 = Utility.getSelectionLikeWithIn(mmemonics);
光标查询 = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, selection, null, null);'
public static String getSelectionLikeWithIn(List mmemonics) {
String selection = "";
for (int i = 0; i < mmemonics.size(); i++) {
selection = selection + " display_name LIKE '";
selection = selection + mmemonics.get(i);
if (i == mmemonics.size() - 1){
selection = selection + "%'";
}else {
selection = selection + "%' OR";
}
}
return selection;
}'
上述方法将字符串的Arraylist转换为where子句
其中 display_name Like 'ab%' OR display_name LIKE 'abc%' 等等......
由于复杂的查询,这给了我低效的结果和应用程序崩溃.....
请建议我如何执行查询以匹配我的按键或在 ContactsProvider 中以任何其他方式匹配以执行此类智能搜索
【问题讨论】:
标签: android android-contacts contactscontract