【发布时间】:2019-04-11 07:26:41
【问题描述】:
我有一个应用程序,可以从我的 Web 服务器上的 XML 文件将联系人插入手机。该应用程序每天重新插入一次联系人,因此我有最新的联系人和号码等。但是,我想从第一次插入中删除所有联系人,以免重复。
在插入列表之前,我尝试过的所有代码都会导致所有联系人被删除。因此,这也会删除不属于 XML 列表的其他联系人。
for (int temp = 0; temp < mainList.getLength(); temp++) {
Node mainNode = mainList.item(temp);
Element eElement = (Element) mainNode;
list.add(getChildElementContent(eElement, "NAME") + ": " +
getChildElementContent(eElement, "NUMBER"));
System.out.println(list.get(temp));
ArrayList<ContentProviderOperation> ops = new
ArrayList<ContentProviderOperation>();
int rawContactInsertIndex = ops.size();
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
while (cur.moveToNext()) {
try{
String lookupKey = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
System.out.println("The uri is " + uri.toString());
cr.delete(uri, ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME + "=" + getChildElementContent(eElement,"NAME"), null);
System.out.println(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME)));
System.out.println( getChildElementContent(eElement,"NAME"));
}
catch(Exception e)
{
System.out.println(e.getStackTrace());
}
}
where 子句应该只删除与我的 XML 文件中的联系人同名的联系人。但它会删除手机上的所有联系人。
【问题讨论】:
-
与其删除并重新上传ijng,不如更新现有的联系人。删除和重新创建可能会搞砸各种其他应用程序。
标签: java android android-contacts