从Contacts.CONTENT_URI获取ContentResolver中的Max _id

时间:2016-11-30 14:31:16

标签: android android-contacts android-contentresolver

我想在联系人中获取最后添加的联系人,并获取我想要拉取联系人的最大_id。所以这是我想要实现的查询:

AppMain.applicationContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, 
    new String[]{
            "MAX(" + ContactsContract.Contacts._ID + ") as max_id", 
            ContactsContract.Contacts.DISPLAY_NAME, 
            ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER
    }, 
    null, null, null);

但不幸的是我收到了这个错误: 无效列MAX(contact_id)为max_id

我尝试删除'作为max_id'但没有运气。

是否有人知道如何获取最后添加的联系人或获取联系人的最大_id。

1 个答案:

答案 0 :(得分:1)

Android的ContentProvider框架并未正式支持此功能,尤其是在提供商设置strictProjectionMap标志的情况下。

但是这应该有效,它会询问按联系人ID排序的所有联系人,并将结果限制为1:

Cursor c = cr.query(Contacts.CONTENT_URI, new String[] { Contacts._ID }, null, null, Contacts._ID + "DESC LIMIT 1");
if (c != null && c.moveToNext()) {
    Log.d(TAG, "id is: " + c.getLong(0));
}