Androidから連絡先を取得するためのカーソルがいくつかありましたが、すべて問題ありませんが、「Order by」句を機能させることができないという問題があります。Upper
" " と句を使用しても、多くのことを試しましたが、localized collection
機能していないようです。結果を保存するためにハッシュマップを使用しているため、ハッシュマップを注文する必要があると思いますが、順序で問題を解決して保存する必要があるため、これは必要ありません処理時間。これは私のコードです:
private Cursor getContacts() {
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] { ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME };
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '"
+ ("1") + "' AND "+ ContactsContract.Contacts.HAS_PHONE_NUMBER +"='" +("1")+"'";
String sortOrder =" "+ ContactsContract.Contacts.DISPLAY_NAME +" ASC";
CursorLoader query = new CursorLoader(context,uri, projection,
selection, null,
sortOrder);
return query.loadInBackground();
}
これは、グループごとに連絡先を取得するための other です。
contactInfo = new HashMap<String, ContactInfo>();
Cursor c = context.getApplicationContext().getContentResolver().query(ContactsContract.Data.CONTENT_URI
, new String[] {
ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts._ID,
ContactsContract.RawContacts.CONTACT_ID },
ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + " = ?"+ " AND "
+ ContactsContract.Contacts.HAS_PHONE_NUMBER +"='" +("1")+"'",
new String[] { groupId },"UPPER("+ ContactsContract.Contacts.DISPLAY_NAME + ") ASC");
カーソルを取得した後、 while(c.moveToNext())
コードを使用します