从 android 联系人中删除单个联系人

Posted

技术标签:

【中文标题】从 android 联系人中删除单个联系人【英文标题】:deleting single contact from android contacts 【发布时间】:2014-02-14 05:06:39 【问题描述】:

好吧,我要疯了。 我已经搞砸了一段时间。一旦您知道contact_id 这么简单,不应该删除单个联系人吗?此删除运行,不会引发错误,但不会删除联系人。

日志信息显示如下:

delete    contact_id = '615'
delete    return code : 0

这是涉及的代码:

private static int deleteContact(Context c, String id) 

    String where = ContactsContract.Data.CONTACT_ID + " = '" + id + "'";
    int rc = -1;
    try 
        Log.i("delete", where);
        rc = c.getContentResolver().delete(ContactsContract.Contacts.CONTENT_URI, where, null);
        Log.i("delete",String.format("return code : %d", rc));
     catch (Exception e) 
        System.out.println(e.getStackTrace());
    

    return rc;

有人可以帮我找到解决方案或提出替代方案吗?

【问题讨论】:

首先,你确定这个id的联系人存在吗?其次,更好的选择是使用c.getContentResolver().delete(ContactsContract.Contacts.CONTENT_URI, ContactsContract.Data.CONTACT_ID + "=?", new String[] id); 你试过***.com/questions/527216/…的方法吗? 第一个答案是……是的。我确定该 ID 存在。我(愚蠢的我)选择同步 Outlook 和谷歌地址簿。我希望有一个相当智能的同步,但不是那么多。因此,我有一些重复。我正在使用的代码通过检查 AccountType 的联系人循环...如果它是谷歌,它会留下来,它的外观将 id 传递给我的小函数以被删除。我从 SO#527216 中的代码开始,将其清理为我所拥有的。我确实从建议的开始( 【参考方案1】:

好吧,我回去重温了 questions/527216/... 如果它对我不起作用,那该死的。我不知道我整天做错了什么......但是休息了几个小时,再复制/粘贴一些,这个功能会为我删除一个联系人:

    private static int deleteContact(Context c, String lookupKey) 
    int rc = 0;
    ContentResolver cr = c.getContentResolver();
    try 
        Uri uri = Uri.withAppendedPath(
                ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
        rc = cr.delete(uri, null, null);
     catch (Exception e) 
        System.out.println(e.getStackTrace());
    

    return rc;

感谢您的回答!

【讨论】:

所有联系人都被删除

以上是关于从 android 联系人中删除单个联系人的主要内容,如果未能解决你的问题,请参考以下文章

如何从 android 手机中获取已删除的联系人以及如何恢复它

如何以编程方式在android 10中恢复已删除的联系人

Android 如何发送多个联系人附加在单个 .vcf 文件中并发送到邮件?

Android原生联系人应用程序删除每个帐户联系人

从 Android 联系人中获取电子邮件和电话

如何使用 phonegap 作为复选框列表显示从 android 设备获取的联系人?