diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2015-05-11 17:28:34 +0200 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2015-05-11 17:28:34 +0200 |
commit | 20a6c5ce8a0484cc0ef8f4c5ca1405f60e646e1f (patch) | |
tree | 258667acf6ea0c995b47195492d453c7459b31ca /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util | |
parent | 92ac2ded10548756922a4c22ebae0a19b8862426 (diff) | |
parent | 5c44f8400970de5943fd6c5e804dfa394f3deb01 (diff) | |
download | open-keychain-20a6c5ce8a0484cc0ef8f4c5ca1405f60e646e1f.tar.gz open-keychain-20a6c5ce8a0484cc0ef8f4c5ca1405f60e646e1f.tar.bz2 open-keychain-20a6c5ce8a0484cc0ef8f4c5ca1405f60e646e1f.zip |
Merge tag 'v3.2.1' into linked-identities
Version 3.2.1
Conflicts:
OpenKeychain/build.gradle
OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyAdapter.java
OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java
OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EncryptKeyCompletionView.java
OpenKeychain/src/main/res/layout/decrypt_text_fragment.xml
OpenKeychain/src/main/res/values/strings.xml
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java index 609288bf1..e1efd5abc 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java @@ -446,6 +446,13 @@ public class ContactHelper { writeKeysToMainProfileContact(context, resolver); + writeKeysToNormalContacts(context, resolver); + } + + private static void writeKeysToNormalContacts(Context context, ContentResolver resolver) { + // delete raw contacts flagged for deletion by user so they can be reinserted + deleteFlaggedNormalRawContacts(resolver); + Set<Long> deletedKeys = getRawContactMasterKeyIds(resolver); // Load all public Keys from OK @@ -519,6 +526,9 @@ public class ContactHelper { * @param context */ public static void writeKeysToMainProfileContact(Context context, ContentResolver resolver) { + // deletes contacts hidden by the user so they can be reinserted if necessary + deleteFlaggedMainProfileRawContacts(resolver); + Set<Long> keysToDelete = getMainProfileMasterKeyIds(resolver); // get all keys which have associated secret keys @@ -585,7 +595,7 @@ public class ContactHelper { * * @param resolver * @param masterKeyId - * @return + * @return number of rows deleted */ private static int deleteMainProfileRawContactByMasterKeyId(ContentResolver resolver, long masterKeyId) { @@ -603,6 +613,28 @@ public class ContactHelper { } /** + * deletes all raw contact entries in the "me" contact flagged for deletion ('hidden'), + * presumably by the user + * + * @param resolver + * @return number of raw contacts deleted + */ + private static int deleteFlaggedMainProfileRawContacts(ContentResolver resolver) { + // CALLER_IS_SYNCADAPTER allows us to actually wipe the RawContact from the device, otherwise + // would be just flagged for deletion + Uri deleteUri = ContactsContract.Profile.CONTENT_RAW_CONTACTS_URI.buildUpon(). + appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build(); + + return resolver.delete(deleteUri, + ContactsContract.RawContacts.ACCOUNT_TYPE + "=? AND " + + ContactsContract.RawContacts.DELETED + "=?", + new String[]{ + Constants.ACCOUNT_TYPE, + "1" + }); + } + + /** * Delete all raw contacts associated to OpenKeychain, including those from "me" contact * defined by ContactsContract.Profile * @@ -677,6 +709,21 @@ public class ContactHelper { }); } + private static int deleteFlaggedNormalRawContacts(ContentResolver resolver) { + // CALLER_IS_SYNCADAPTER allows us to actually wipe the RawContact from the device, otherwise + // would be just flagged for deletion + Uri deleteUri = ContactsContract.RawContacts.CONTENT_URI.buildUpon(). + appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build(); + + return resolver.delete(deleteUri, + ContactsContract.RawContacts.ACCOUNT_TYPE + "=? AND " + + ContactsContract.RawContacts.DELETED + "=?", + new String[]{ + Constants.ACCOUNT_TYPE, + "1" + }); + } + /** * @return a set of all key master key ids currently present in the contact db */ |