Андроид без учета регистра курсора с оператором LIKE (работает для всех локалей)

Я пытаюсь сделать запрос фильтрации:

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 i test на русских символах)

Вещи, которые не работают:

  • КОЛЛЕКТИВНАЯ НОКАЗА (UNICODE, LOCALIZED)
  • Верхний (), нижний ()

Нужна помощь или совет. Спасибо.

Обновление: мое решение в этой ситуации

Я не решаю проблему без учета регистра LIKE, но я нашел решение для своей конкретной ситуации, и он работает даже лучше, чем я ожидал 🙂 Может быть, это будет полезно для вас. Таким образом, для фильтрации контактов с телефонами по имени используйте 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); } 

Этот провайдер выполняет расширенную фильтрацию без учета регистра, а также фильтрует по номеру телефона, если ограничение является номером 🙂