如何将偏移量应用于 android (Kotlin) 中的 Contacts Provider 查询?
Posted
技术标签:
【中文标题】如何将偏移量应用于 android (Kotlin) 中的 Contacts Provider 查询?【英文标题】:How do you apply an offset to a Contacts Provider query in android (Kotlin)? 【发布时间】:2021-02-22 19:28:35 【问题描述】:我正在尝试从 Contacts Provider 批量读取 聚合 联系人。我可以从文档中看到 ContactsContract 有一个 LIMIT_PARAM_KEY
,但这不适用于聚合联系人,我希望同时应用 offset em> 和 限制 到同一个查询?
我尝试按照建议的here 使用Bundle
和ContentResolver.QUERY_ARG_OFFSET
和ContentResolver.QUERY_ARG_LIMIT
构建查询,但这似乎不适用于ContactsContract。
谢谢!
【问题讨论】:
【参考方案1】:这里有两个独立的步骤:查询和阅读。
当您从提供者查询数据时,您只需要指定您感兴趣的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。
【讨论】:
以上是关于如何将偏移量应用于 android (Kotlin) 中的 Contacts Provider 查询?的主要内容,如果未能解决你的问题,请参考以下文章