如何将偏移量应用于 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 使用BundleContentResolver.QUERY_ARG_OFFSETContentResolver.QUERY_ARG_LIMIT 构建查询,但这似乎不适用于ContactsContract

谢谢!

【问题讨论】:

【参考方案1】:

这里有两个独立的步骤:查询和阅读。

当您从提供者查询数据时,您只需要指定您感兴趣的selectionprojection。 然后您会收到一个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);
    

注意:如果操作成功,moveToPositionmoveToNext 返回 true。

【讨论】:

以上是关于如何将偏移量应用于 android (Kotlin) 中的 Contacts Provider 查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 UTC 的偏移量(毫秒?

如何将页脚ID偏移到固定位置的底部

具有自定义数据源偏移量的 Android 分页库 RecyclerView 中的项目

如何计算偏移量以绘制到画布中应用了比例变换的最近像素?

如何获取android中元素相对于父元素的位置/偏移量?

如何从 C# 中的电话号码获取 UTC 偏移量