Das ist mein Problem: Ich schreibe eine alternative Kontakte-App, die mit vielen verschiedenen Sprachen und Alphabeten arbeiten soll. Bei der Abfrage von Namen in meiner eigenen Sprache, Schwedisch, sind die Namen mit Umlaut-Zeichen in einer unlogischen Weise für mich sortiert, aber logisch zu Unicode nehme ich an:Android-Kontakte: Falsche lokalisierte Sortierung/Sortierung
Sollte/schwedischer Stil sein: A, B, C, ... , Z, Å, Ä, Ö.
Abfrageer: A, A, A, B, ..., N, O, O, P, ...
Ich nehme dies ein Problem in jeder Sprache sein wird, die von dem lateinischen Alphabet abweicht . Alle Tests, die ich gemacht habe, sind auf dem Emulator. Meine Entwicklergruppe nimmt Änderungen am Framework vor, so dass Antworten auf niedriger Ebene ebenfalls willkommen sind.
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);
Update: wir diesen Track derzeit untersucht: Sort a String array, TBC ... Ich habe es auch als ein Problem auf Google Code.
Sind Sie sicher, dass das Gerät korrekte Gebietsschemaeinstellungen hat? Versuchen Sie es mit SQLiteDatabase.setLocale – Mikpa
Nun, die Datenbank wird vom Android-System verwaltet, und SetLocale (Locale l) ist keine statische Funktion. Während ich das doc (2.2) interpretiere, soll der Collator LOCALIZED in der Lage sein, diese Sortierung zu verwalten - aber sie haben keine Dokumentation (das Dokument sagt, XXX ein Link benötigt!: P) – emolaus