これは私の問題です:私は別の言語とアルファベットで動作するように指定されている代替連絡先アプリを書いています。スウェーデン語で名前を照会するとき、ウムラウト文字を使用する名前は私には論理的ではなく、ユニコードに論理的にソートされています。Androidの連絡先:不正確なローカライズされた照合/ソート
スウェーデン語のスタイル:A、B、C、... 、Z、Å、Ä、Ö。
クエリ結果:A、A、A、B、...、N、O、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);
アップデート:私たちは現在、このトラックを調査している:Sort a String array、TBC ... を私はまた、Google Codeの上の問題としてこれを追加しました。
デバイスのロケール設定が正しいですか? SQLiteDatabase.setLocaleを使用してみてください – Mikpa
データベースはAndroidシステムで管理されており、setLocale(Locale l)は静的関数ではありません。 doc(2.2)を解釈しているので、LOCALIZEDの照合順序はこの並べ替えを管理できるはずですが、ドキュメンテーションはありません(docはXXXにリンクが必要です:P) – emolaus