j2e*_*esu 8 sqlite android android-sqlite
我正在尝试进行过滤查询:
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);
}
Run Code Online (Sandbox Code Playgroud)
但LIKE运算符对于非ascii字符以区分大小写的方式工作(如SQLite文档所述).有没有办法让案例不敏感的LIKE?(ps我测试俄罗斯符号)
不起作用的事情:
需要帮助或建议.谢谢.
我还没有解决不区分大小写的问题,但我找到了适合我的具体情况的解决方案,而且它的效果甚至比我预期的还要好:)也许它对你有用。因此,要按姓名过滤手机联系人,请使用 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);
}
Run Code Online (Sandbox Code Playgroud)
该提供商执行高级的不区分大小写的过滤,如果约束是数字,还可以按电话号码进行过滤:)
| 归档时间: |
|
| 查看次数: |
2005 次 |
| 最近记录: |