【发布时间】: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}); -
第一个答案是……是的。我确定该 ID 存在。我(愚蠢的我)选择同步 Outlook 和谷歌地址簿。我希望有一个相当智能的同步,但不是那么多。因此,我有一些重复。我正在使用的代码通过检查 AccountType 的联系人循环...如果它是谷歌,它会留下来,它的外观将 id 传递给我的小函数以被删除。我从 SO#527216 中的代码开始,将其清理为我所拥有的。我确实从建议的开始(