Контакты Android: неправильная локализация / сортировка - PullRequest
4 голосов
/ 22 ноября 2010

это моя проблема: я пишу альтернативное приложение контактов, которое предназначено для работы с МНОЖЕСТВОМ разных языков и алфавитов. При запросе имен на моем родном языке, шведском, имена, использующие символы умлаут, сортируются мне нелогичным образом, но логично, чтобы я указывал Unicode:

Должен быть / Шведский стиль: A, B, C, ..., Z, Å, Ä, Ö.

Результат запроса: A, Å, Ä, B, ..., N, O, Ö, P, ...

Я предполагаю, что это будет проблемой на любом языке, который отличается от латинского алфавита. Все тесты, которые я сделал, находятся на эмуляторе. Моя группа разработчиков вносит изменения в структуру, поэтому приветствуются и ответы низкого уровня.

Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
       ContactsContract.Contacts._ID,
       ContactsContract.Contacts.DISPLAY_NAME,
       ContactsContract.Contacts.PHOTO_ID
       };
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'";
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
mCursor = managedQuery(uri, projection, null, null, sortOrder);

Обновление: в данный момент мы исследуем этот трек: Сортировка массива String , TBC ... Я также добавил это как проблему в Google Code.

1 Ответ

1 голос
/ 23 ноября 2010

Gaah.Похоже, что это так:

запуск следующего кода в vanilla Java (SE-1.6) генерирует желаемый результат:

String strings[] = {"Åke", "Äskil", "Otto", "Adam", "Örjan", "Palle", "Nisse"};
Locale locale = new Locale("sv", "SE");
Collator collator = java.text.Collator.getInstance(locale);
java.util.Arrays.sort(strings, collator);

Но тот же самый код в Android НЕ работает для меня.

Редактировать: Я сделал проблему из этого на Android-сайте Google Code, он был прокомментирован рецензентом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...