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

use*_*773 15 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);
Run Code Online (Sandbox Code Playgroud)

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

提前致谢

ρяσ*_*я K 37

要根据名称使用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");
Run Code Online (Sandbox Code Playgroud)

  • {id}在这里是什么? (2认同)

Akh*_*bey 12

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

ContentResolver cr = getContentResolver();

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


Nic*_*ell 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");
Run Code Online (Sandbox Code Playgroud)