如何从android中的设备联系人列表中删除或更新的联系人

时间:2012-02-11 06:45:56

标签: android

我希望从设备联系人列表中删除或更新联系人。我使用了内容观察者,但未获得正在更新或删除的联系人的任何详细信息。

所以有任何监听器,以便我们可以获得在设备联系人列表中删除或更新的联系人或在删除或更新联系人时从系统触发的任何操作。

更新

实际上我的申请要求是:

如果用户删除联系人或更新设备联系人列表中的联系人,如

enter image description here  enter image description here enter image description here

如果用户删除该联系人,则我的应用程序需要删除联系信息

正如您建议我使用内容观察者并查找uri但使用此我只知道联系人已删除但未获得有关该删除联系人的任何信息。

有没有办法获取删除联系信息。

提前致谢

2 个答案:

答案 0 :(得分:1)

答案是ContentObserver,这是您正在寻找的内容,您可以查看此主题以进一步使用ContentObserver

ContentObserver示例的进一步链接, Observing content

<强>更新

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

您可以使用ContentObserver

为您感兴趣的特定Uri注册Loookup URI
Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.
                                                   CONTENT_LOOKUP_URI,lookupKey);
getContentResolver().registerContentObserver(lookupUri, false, myObserver);

答案 1 :(得分: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;
    }
}