如何在安卓设备上获取已删除或已更新的联系人列表中的联系人信息

3
我希望能够获取设备联系人列表中已删除或更新的联系方式。我已经使用了 content observer,但没有得到任何被更新或删除的联系人的详细信息。
所以是否有任何监听器可以获取在设备联系人列表中被删除或更新的联系方式,或者系统发出的任何操作来删除或更新联系人。
更新: 我的应用程序实际上需要:
如果用户在设备联系人列表中删除或更新联系人,例如
并且如果用户删除该联系人,则我的应用程序需要删除的联系人信息。
正如您建议我使用 content observer 和 lookup uri,但是使用它,我只知道联系人已被删除,但未获得有关已删除联系人的任何信息。
因此,是否有任何方法可以获取删除的联系人信息。
提前致谢。

嘿,Vijay,你是怎么解决这个问题的?先谢谢了。 - rakesh
2个回答

1

答案是ContentObserver,这就是你要找的,你可以查看此线程以了解ContentObserver的进一步用法。

关于ContentObserver的示例,请参考以下链接{{link2:Observing content}}。

更新:

{{link3:Loookup URI}} - 如果您的应用程序需要维护对联系人的引用,则应使用查找键而不是传统的行ID。您可以从联系本身获取查找键,它是ContactsContract.Contacts表上的一列。

您可以使用Loookup URI为您感兴趣的特定Uri注册ContentObserver

Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.
                                                   CONTENT_LOOKUP_URI,lookupKey);
getContentResolver().registerContentObserver(lookupUri, false, myObserver);

谢谢您的快速回复,但我使用Content Observer并没有什么用,因为我想要更新或删除的联系人详细信息,而这正是Content Observer无法提供给我的。 - Vijay
你使用了什么?你遇到了什么问题? - Lalit Poptani
我已经使用了ContentObserver。当我们在设备的联系人列表中添加联系人时,ContentObserver的onchange方法被调用,但是这个方法并没有给出那个联系人的详情。所以我应该从哪里获取这个添加联系人的详情呢?同时,我也需要删除和编辑联系人。这就是我的问题所在,无论如何都需要解决。 - Vijay
修改了我的回答,希望你正在寻找LookUp Uri的概念。 - Lalit Poptani
谢谢您的快速回复,但我的应用程序要求在更新的问题中显示。如果有解决方案,请建议我。 - Vijay

0

首先,您需要在主活动中注册此接收器--

 getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true,new MyCOntentObserver());

之后

public class MyCOntentObserver extends ContentObserver {

    public MyCOntentObserver() {
        super(null);
    }

    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);
        Log.d("onChange1", "~~~~~~" + selfChange);

        //getApplicationContext().startService(new Intent(MainActivity.this, SendContactService.class));
    }

    @Override
    public boolean deliverSelfNotifications() {
        Log.d("deliverSelfNotifications", "~~~~~~fg");
        return true;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接