【问题标题】:Getting all contacts timestamp wise明智地获取所有联系人时间戳
【发布时间】:2012-02-13 08:47:55
【问题描述】:

我一直在尝试按添加顺序对设备的所有联系人进行排序。 我正在使用以下查询:

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
    String[] projection = new String[] {
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
            ContactsContract.CommonDataKinds.Phone.NUMBER,
            ContactsContract.CommonDataKinds.Phone.CONTACT_STATUS_TIMESTAMP };

    Cursor c = getContentResolver().query(uri, projection, null, null,
            ContactsContract.CommonDataKinds.Phone.CONTACT_STATUS_TIMESTAMP);

在查询的排序顺序中传递nullContactsContract.CommonDataKinds.Phone.CONTACT_STATUS_TIMESTAMP 没有任何区别

经过检查,游标在所有时间戳列中都有null。有没有办法完成这件事或我在这方面做错了什么?

【问题讨论】:

    标签: android timestamp contacts android-contentprovider


    【解决方案1】:

    这是联系人状态更新的时间戳。您得到 null 可能是因为没有联系人有状态更新。

    由于联系人是如何聚合的,我认为没有办法找出首先添加了哪个联系人,因为联系人的 ID 实际上可能会发生变化,并且看起来比原来添加的时间晚。为什么要弄清楚这些信息?

    【讨论】:

    • @roberty- 我想根据条件在 3 个不同的列表中显示所有联系人。所以我首先将所有联系人添加到一个数据库中,并带有关于哪个联系人应该出现在哪个列表中的标志。现在,当应用程序恢复时,它应该检查是否已添加新联系人,或者如果已添加,请将其添加到 db。无论如何,我以其他方式完成了它,但仍然想知道联系人的 ID 是否发生变化以及谈论联系人时的状态意味着什么
    • 您的应用可以将状态注入到 People/Contacts 应用中。默认情况下,我相信它只是从您的 GTalk 状态中获取它。有两种类型的联系人,RawContacts 和 Contacts。联系人是原始联系人的集合。如果您添加新的原始联系人,系统可能会重新聚合并确定新添加的原始联系人是否属于现有联系人。这样您就不会为同一个人使用 gmail、twitter 和 facebook 帐户创建 3 个条目。在此过程中,联系人 ID 可能会更改。
    猜你喜欢
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 2013-12-16
    相关资源
    最近更新 更多