17

我的目的是在 android中按排序顺序显示联系人。content resolver

为此,我正在写:

Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = ?", new String[] { id }, null);

它需要查询方法中的最后一个参数不应该为空,以便对元素进行排序Name。我必须将哪部分代码替换为空参数才能实现按名称排序?

4

4 回答 4

39

要根据名称对结果进行排序,请使用Phone.DISPLAY_NAME常量ASC作为方法的最后一个参数query。这样做:

  Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                   null, 
                   ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = ?",
                   new String[] { id },
                   ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" ASC");
于 2012-12-11T06:36:04.050 回答
14

您可以使用Upper()小写和大写联系人姓名进行排序。

ContentResolver cr = getContentResolver();

Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
        null, null,  "upper("+ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + ") ASC");
于 2014-06-30T11:52:31.707 回答
14

在 API 级别 11 及更高版本上使用SORT_KEY_PRIMARYSORT_KEY_ALTERNATIVE会更好。

Cursor cursor = getContentResolver().query(
    ContactsContract.Contacts.CONTENT_URI,
    null, null, null,
    ContactsContract.Contacts.SORT_KEY_PRIMARY + " ASC");
于 2015-01-16T15:52:05.023 回答
1

ContentResolver.query()方法接受许多参数,但要对内容提供程序记录进行排序,您必须编辑此方法的最后一个参数

在此处输入图像描述

它应该是这样的:

Cursor cursor=getContentProvider().query(.......,"DISPLAY_NAME ASC")

这将按联系人姓名的升序排列联系人。

注意:此参数应为字符串数据类型。

于 2019-07-07T18:53:45.557 回答