diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2016-02-10 17:36:02 +0100 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2016-02-10 17:36:02 +0100 |
commit | da6dfb57a0aa816919cd23752e1707ba6a2e8cae (patch) | |
tree | d6ede03785491d4c56b10cad9062b8bcac3ea78b /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java | |
parent | 01b165ea88a032f31b8c2ff07351d3f893f6413d (diff) | |
parent | 751298a4d832f316244fd6345c46ba806dcfc860 (diff) | |
download | open-keychain-da6dfb57a0aa816919cd23752e1707ba6a2e8cae.tar.gz open-keychain-da6dfb57a0aa816919cd23752e1707ba6a2e8cae.tar.bz2 open-keychain-da6dfb57a0aa816919cd23752e1707ba6a2e8cae.zip |
Merge branch 'master' into performance
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java index 2985c2030..cdfe2f1ce 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java @@ -17,8 +17,8 @@ package org.sufficientlysecure.keychain.service; +import android.Manifest; import android.accounts.Account; -import android.accounts.AccountManager; import android.app.PendingIntent; import android.app.Service; import android.content.AbstractThreadedSyncAdapter; @@ -27,14 +27,17 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.SyncResult; +import android.content.pm.PackageManager; import android.os.Bundle; import android.os.IBinder; import android.preference.PreferenceActivity; import android.provider.ContactsContract; import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationManagerCompat; +import android.support.v4.content.ContextCompat; import org.sufficientlysecure.keychain.Constants; +import org.sufficientlysecure.keychain.KeychainApplication; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.ui.SettingsActivity; import org.sufficientlysecure.keychain.util.ContactHelper; @@ -151,10 +154,29 @@ public class ContactSyncAdapterService extends Service { } public static void enableContactsSync(Context context) { - AccountManager manager = AccountManager.get(context); - Account account = manager.getAccountsByType(Constants.ACCOUNT_TYPE)[0]; + Account account = KeychainApplication.createAccountIfNecessary(context); + if (account == null) { + return; + } ContentResolver.setIsSyncable(account, ContactsContract.AUTHORITY, 1); ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, true); } + + public static void deleteIfSyncDisabled(Context context) { + if (!(ContextCompat.checkSelfPermission(context, Manifest.permission.READ_CONTACTS) + == PackageManager.PERMISSION_GRANTED)) { + return; + } + + Account account = KeychainApplication.createAccountIfNecessary(context); + if (account == null) { + return; + } + + // if user has disabled automatic sync, delete linked OpenKeychain contacts + if (!ContentResolver.getSyncAutomatically(account, ContactsContract.AUTHORITY)) { + new ContactHelper(context).deleteAllContacts(); + } + } } |