按排序顺序显示联系人ContactsContract.Contacts of Content Resolver

时间:2012-12-11 06:24:47

标签: android android-contentresolver

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

为此我写信:

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

它需要查询方法中的最后一个参数不应为null,以便按Name对元素进行排序。代码的哪一部分我要替换null参数来实现按名称排序?或者请在这种情况下帮我查询......

提前致谢

4 个答案:

答案 0 :(得分:36)

要根据名称使用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");

答案 1 :(得分:11)

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

ContentResolver cr = getContentResolver();

Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
        null, null,  "upper("+ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + ") ASC");

答案 2 :(得分:11)

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

Cursor cursor = getContentResolver().query(
    ContactsContract.Contacts.CONTENT_URI,
    null, null, null,
    ContactsContract.Contacts.SORT_KEY_PRIMARY + " ASC");

答案 3 :(得分:0)

ContentResolver.query()方法采用许多参数,但是要对内容提供者记录进行排序,则必须编辑此方法的最后一个参数

enter image description here

应该是这样的:

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

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

注意:此参数应为String数据类型。