Vik*_*lla 0 android contactscontract android-contacts
我想实现T9搜索,例如android native Dialer或TrueCaller Dialer。我到目前为止所取得的成就是:
将击键转换为字符串模式,例如,如果我在拨号程序上按2,它将给我-“ abc”“ ac”“ ca”等
现在我查询
字符串选择= Utility.getSelectionLikeWithIn(mmemonics);
游标查询= getContentResolver()。query(ContactsContract.Contacts.CONTENT_URI,null,selection,null,null);'
公共静态字符串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喜欢'ab%'或display_name喜欢'abc%'等等……
好吧,这给了我效率低下的结果,并且由于复杂的查询而导致应用程序崩溃.....
请建议我如何执行查询以像我的击键一样进行匹配,或者以其他方式在ContactsProvider中进行匹配以执行此类智能搜索