2

我试图维护一个联系人数据库,并在URI发生某些变化时立即获取添加/更新/删除的回调。检测一个Android联系人是否已被删除

我写了一个ContentObserver来观察ContactsContract.Contacts.CONTENT_URI的联系人。一旦联系人发生变化,我就会收到回复,然后通过检查ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP来更新我的数据库。 虽然这对于添加/更新工作正常,但确实不适用于删除联系人

我不想解析我在内存中的所有联系人并检查android数据库。这需要时间和CPU。

我知道存在这些类型的许多问题,但我无法弄清楚具体删除联系人的事情。

是否存在执行此操作的方法?

+0

具有u找到任何解决办法呢,我正在经历同样的 – user3475052

+0

@ user3475052:Android提供“ContactsContract.DeletedContacts.CONTENT_URI”原料药18以上。您可以使用此内容Uri的时间戳记来跟踪已删除的联系人。这比通过Contacts.Content_uri跟踪联系快得多。 – ShReYaNsH

+0

嘿shreyansh你可以解释更多一点 – user3475052

回答

0

正如我在上面的评论中发布的,以下代码适用于API级别18及以上。 您可以在uri ContactsContract.DeletedContacts.CONTENT_URI上查询以获取所有已删除联系人的列表。

我的查询看起来如下:

String selection = ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP + " > ?"; 
    String[] selectionArgs = new String[]{String.valueOf(mLastContactDeleteTime)}; 
    Cursor cursor = mContext.getContentResolver().query(ContactsContract.DeletedContacts.CONTENT_URI, null, selection, selectionArgs, null);