问题描述
我正试图从 Contacts Provider 中批量读取 汇总 联系人。我从文档中看到 ContactsContract 有一个LIMIT_PARAM_KEY
,但这不适用于汇总联系人,并且我希望同时应用 偏移量 和 限制 到同一查询?
我已经尝试使用Bundle
和ContentResolver.QUERY_ARG_OFFSET
的{{1}}和建议的here来构建查询,但这似乎不适用于 ContactsContract 。
谢谢!
解决方法
这里有两个单独的步骤:查询和阅读。
从提供者那里查询数据时,只需指定您感兴趣的selection
和projection
。
然后,您会收到cursor
,您可以用它来实际读取数据。
使用光标可以完全控制要读取的记录以及读取方式。
阅读:https://developer.android.com/reference/android/database/Cursor
这是示例代码,将从位置5开始读取10个联系人:
Cursor cur = getContentResolver().query(Contacts.CONTENT_URI,projection,selection,null,null);
if (cur.moveToPosition(4)) {
for (int i = 0; i < 10 && cur.moveToNext(); i++) {
long contactId = cur.getLong(0);
Log.i("Hello","Contact " + i + ": " + contactId);
}
}
- 注意:如果操作成功,
moveToPosition
和moveToNext
返回true。