Получить контакты, игнорируя акценты - PullRequest
0 голосов
/ 25 января 2019

Я получаю контакты с телефона, как показано ниже.Я хотел бы игнорировать акцент, например, имя «Jérome» будет возвращено для поиска «jero» или «jéro».

 var contacts = listOf<Contact>()

        val displayNameProjection = arrayOf(ContactsContract.Contacts.PHOTO_THUMBNAIL_URI,  ContactsContract.Contacts.DISPLAY_NAME_PRIMARY)
        val whereName =  ContactsContract.Contacts.DISPLAY_NAME_PRIMARY + " LIKE ?"
        val whereNameParams = arrayOf( "%" + search + "%")
        val contactCursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI,
                displayNameProjection, whereName, whereNameParams,ContactsContract.Contacts.DISPLAY_NAME_PRIMARY)

        contactCursor?.let { cursor ->
            contacts = generateSequence { if (cursor.moveToNext()) cursor else null }
                    .take(10)
                    .map {
                        Contact( it.getString(it.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME_PRIMARY)),
                                it.getString(it.getColumnIndex(ContactsContract.Contacts.PHOTO_THUMBNAIL_URI)))
                    }
                    .toList()


            cursor.close()
        }

1 Ответ

0 голосов
/ 27 января 2019

Используйте API CONTENT_FILTER_URI для быстрого поиска контактов по имени, это должно автоматически обрабатывать акценты для вас:

String name = "jero";
Uri searchUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI, Uri.encode(name));
Cursor cur = getContentResolver().query(searchUri, null, null, null, null);
DatabaseUtils.dumpCursor(cur);
if (cur != null) cur.close();
...