在android上删除联系人时,其他随机联系人的ID已更改

问题描述 投票:0回答:1

我正在尝试将用户电话号码同步到Firestore。它似乎可以工作,但是当我从手机中删除联系人时,似乎其他一些联系人ID被替换,从而导致不必要的删除和创建到Firestore。我唯一的线索是,这些联系方式大多在ID 120,000左右。正常吗到底发生了什么?

这是我获取新创建的联系人的方式,lcid是注册到firestore的最后一个联系人ID:

private fun getNewContacts(): Cursor? {
    val projection = arrayOf(
            ContactsContract.Contacts._ID,
            ContactsContract.Contacts.DISPLAY_NAME,
            ContactsContract.Contacts.HAS_PHONE_NUMBER)

    val selection = ContactsContract.Contacts._ID + "> ?"

    val selectionArgs = arrayOf(mFireContactDetails!!.lcid.toString())

    val sortOrder = ContactsContract.Contacts._ID + " ASC"

    return mContentResolver.query(
            ContactsContract.Contacts.CONTENT_URI,
            projection,
            selection,
            selectionArgs,
            sortOrder)
}

这是我如何获取已删除的联系人,ldel_ms是注册到Firestore的最后一个删除的时间戳:

private fun getDeletedContacts(): Cursor? {
    val projection = arrayOf(
            ContactsContract.DeletedContacts.CONTACT_ID,
            ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP)

    val selection = ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP + "> ?"

    val selectionArgs = arrayOf(mFireContactDetails!!.ldel_ms.toString())

    val sortOrder = ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP + " ASC"

    return mContentResolver.query(
            ContactsContract.DeletedContacts.CONTENT_URI,
            projection,
            selection,
            selectionArgs,
            sortOrder)
}

下一个是日志示例。当我删除联系人时,它被识别为已删除,但其他随机联系人也将替换其ID(我未提及日志名称)

values retrieval success
new contacts detected
adding 120797
adding 120803
adding 120804
adding 120805
adding 120806
adding 120807
adding 120808
adding 120809
adding 120810
sync new contacts success
deleted contacts detected
deleting contact id: 119576
deleting contact id: 120798
deleting contact id: 120799
deleting contact id: 120800
deleting contact id: 120801
deleting contact id: 120802
deleting contact id: 119762
deleting contact id: 119700
deleting contact id: 119561
deleting contact id: 119613
sync deleted contacts success
android android-contacts
1个回答
0
投票

[从文档和文章看来,android有时可以更改联系人ID,这是非常奇怪且出乎意料的,但是在我尝试了数周并尝试解决此问题之后,它才有意义。

据我了解,原因是多种多样的,因此在我的情况下,我也可以猜测一次更改或删除联系人可以更改其他联系人ID的情况。

似乎要克服,我需要使用`LOOKUP_KEY,我尚未了解如何。

某些文档包括:

Detecting changes in android contacts

Check if contact has been changes on...

LOOKUP_KEY

希望它会有所帮助,因为很难遵循android文档

© www.soinside.com 2019 - 2024. All rights reserved.