我正在尝试按字母排序顺序获取手机通讯录。它通过快速获取名称但未获得排序顺序。我尝试 ContactsContract.Contacts.SORT_KEY_PRIMARY +“ASC”也 ContactsContract .Contacts.DISPLAY_NAME +“ASC”但没有取得好成绩。
我的代码是
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null,ContactsContract.Contacts.DISPLAY_NAME + " ASC");
while (phones.moveToNext())
{
String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.e("Tag ","Name " + name);
}
phones.close();
是否有任何按排序顺序获取联系人的解决方案
任何人都可以帮助我 在此先感谢:)
答案 0 :(得分:0)
这是我的应用之一的摘录:
Uri uri = ContactsContract.Data.CONTENT_URI;
String selection = String.format("%s = '%s'", ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
// Make this order case insensitive.
String orderBy = "UPPER(" + ContactsContract.Contacts.DISPLAY_NAME_PRIMARY + ") ASC";
contactCursor = context.getContentResolver().query(uri, null, selection, null, orderBy);
基本上,请尝试DISPLAY_NAME_PRIMARY
而不是DISPLAY_NAME
。请注意orderBy子句的区分大小写。
答案 1 :(得分:0)
试试这个..
{{1}}
答案 2 :(得分:0)
像这样使用它会起作用。它是快速和最好的方式。你必须使用它,因为可能有字母,数字,特殊字符和null的情况。
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null,ContactsContract.Contacts.DISPLAY_NAME + " COLLATE NOCASE ASC");
答案 3 :(得分:0)
我使用以下代码将所有联系人按字母顺序排序
public void getAllContacts(ContentResolver cr) {
Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " COLLATE NOCASE ASC"); //cursor fetches data alphabetically
while (phones.moveToNext()) {
ContactDetail cntactDetails = new ContactDetail();
cntactDetails.setName(phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)));
cntactDetails.setNumber(phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
String id = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
cntactDetails.setId(id);
phones.close();
}
注意 - 此处ContactDetail
是用于存储联系人的模型类。