diff options
author | Ricki Hirner <hirner@bitfire.at> | 2019-12-22 17:04:59 +0300 |
---|---|---|
committer | Ricki Hirner <hirner@bitfire.at> | 2019-12-24 00:41:19 +0300 |
commit | bf4ea05d74ca8ee12face85af857718d610590e6 (patch) | |
tree | bc3caaaded8a451e988ece25dc7da66425ae3a13 | |
parent | 532ae5807c355c22c621ea93436666c4f042506f (diff) |
Improve compatibility (for instance with Samsung "Edge panel")
- don't delete all raw contact data rows, but only the ones we use to insert ourselves
-rw-r--r-- | src/main/java/at/bitfire/vcard4android/AndroidContact.kt | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/main/java/at/bitfire/vcard4android/AndroidContact.kt b/src/main/java/at/bitfire/vcard4android/AndroidContact.kt index a8b80b7..101e100 100644 --- a/src/main/java/at/bitfire/vcard4android/AndroidContact.kt +++ b/src/main/java/at/bitfire/vcard4android/AndroidContact.kt @@ -572,11 +572,28 @@ open class AndroidContact( buildContact(builder, true) batch.enqueue(BatchOperation.Operation(builder)) - // delete known data rows before adding the new ones; don't delete group memberships! + // Delete known data rows before adding the new ones. + // - We don't delete group memberships. + // - We'll only delete rows we have inserted so that unknown rows like + // vnd.android.cursor.item/important_people (= contact is in Samsung "edge panel") remain untouched. batch.enqueue(BatchOperation.Operation( ContentProviderOperation.newDelete(dataSyncURI()) - .withSelection(Data.RAW_CONTACT_ID + "=? AND " + Data.MIMETYPE + " NOT IN (?,?)", - arrayOf(id.toString(), GroupMembership.CONTENT_ITEM_TYPE, CachedGroupMembership.CONTENT_ITEM_TYPE)) + .withSelection(Data.RAW_CONTACT_ID + "=? AND " + + Data.MIMETYPE + " IN (?,?,?,?,?,?,?,?,?,?,?,?,?)", + arrayOf(id.toString(), + StructuredName.CONTENT_ITEM_TYPE, + Phone.CONTENT_ITEM_TYPE, + Email.CONTENT_ITEM_TYPE, + Photo.CONTENT_ITEM_TYPE, + Organization.CONTENT_ITEM_TYPE, + Im.CONTENT_ITEM_TYPE, + Nickname.CONTENT_ITEM_TYPE, + Note.CONTENT_ITEM_TYPE, + StructuredPostal.CONTENT_ITEM_TYPE, + Website.CONTENT_ITEM_TYPE, + Event.CONTENT_ITEM_TYPE, + Relation.CONTENT_ITEM_TYPE, + SipAddress.CONTENT_ITEM_TYPE)) )) insertDataRows(batch) batch.commit() |