使用LIKE运算符的Android大小写不敏感游标查询(适用于所有语言环境)

我试图做一个过滤查询:

public Cursor runQuery(CharSequence constraint) { return getActivity().getContentResolver().query( Phone.CONTENT_URI, new String[] {Phone.DISPLAY_NAME, Phone.NUMBER, Phone.TYPE, Phone._ID }, Phone.DISPLAY_NAME + " LIKE '" + constraint + "%'",// <-- problem here null, Phone.DISPLAY_NAME); } 

但LIKE操作符以非ASCII字符的大小写方式工作(如SQLite文档所述)。 有没有办法让不区分大小写的LIKE? (PS我testing俄罗斯符号)

事情不起作用

  • COLLATE NOCASE(UNICODE,LOCALIZED)
  • upper(),lower()

需要帮助或build议。 谢谢。

Solutions Collecting From Web of "使用LIKE运算符的Android大小写不敏感游标查询(适用于所有语言环境)"

更新:我在这种情况下的解决scheme

我还没有解决大小写不敏感LIKE的问题,但我find了一个解决scheme,我的具体情况,它比我预期的更好:)可能会是有用的。 因此, 要通过名称使用Phone.CONTENT_FILTER_URI 过滤与电话的联系人

 @Override public Cursor runQuery(CharSequence constraint) { return mContext.getContentResolver().query( Uri.withAppendedPath(Phone.CONTENT_FILTER_URI, Uri.encode(constraint.toString())), //PROJECTION new String[] { Phone._ID, Phone.DISPLAY_NAME, Phone.NUMBER, Phone.TYPE, Phone.PHOTO_ID}, //WHERE ContactsContract.Contacts.HAS_PHONE_NUMBER + " = 1", null, //ORDER BY null); } 

此提供程序执行高级不区分大小写筛选,并且如果约束是数字,则还会按电话号码进行筛选