aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2015-11-23 11:43:44 +0100
committerDominik Schürmann <dominik@dominikschuermann.de>2015-11-23 11:43:44 +0100
commiteda53d42de111bbba199060e77881fa044a71c7a (patch)
tree0630a14e9f41410a3c383a2ae154a7c5e270483a /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service
parentcd601988db41f7651f376ef419be3dd50aaa4e10 (diff)
downloadopen-keychain-eda53d42de111bbba199060e77881fa044a71c7a.tar.gz
open-keychain-eda53d42de111bbba199060e77881fa044a71c7a.tar.bz2
open-keychain-eda53d42de111bbba199060e77881fa044a71c7a.zip
Disable contact sync by default on Android >= 6
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java34
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java2
2 files changed, 32 insertions, 4 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 64f06fd15..a1c652245 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java
@@ -18,6 +18,7 @@
package org.sufficientlysecure.keychain.service;
import android.accounts.Account;
+import android.accounts.AccountManager;
import android.app.Activity;
import android.app.NotificationManager;
import android.app.PendingIntent;
@@ -25,13 +26,16 @@ import android.app.Service;
import android.content.AbstractThreadedSyncAdapter;
import android.content.ContentProviderClient;
import android.content.ContentResolver;
+import android.content.Context;
import android.content.Intent;
import android.content.SyncResult;
+import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.preference.PreferenceActivity;
import android.provider.ContactsContract;
import android.support.v4.app.NotificationCompat;
+import android.widget.Toast;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
@@ -132,6 +136,11 @@ public class ContactSyncAdapterService extends Service {
// }
}
+ @Override
+ public IBinder onBind(Intent intent) {
+ return new ContactSyncAdapter().getSyncAdapterBinder();
+ }
+
public static void requestContactsSync() {
Bundle extras = new Bundle();
// no need to wait, do it immediately
@@ -143,8 +152,27 @@ public class ContactSyncAdapterService extends Service {
extras);
}
- @Override
- public IBinder onBind(Intent intent) {
- return new ContactSyncAdapter().getSyncAdapterBinder();
+ public static void initContactsSync(Context context) {
+ try {
+ AccountManager manager = AccountManager.get(context);
+ Account[] accounts = manager.getAccountsByType(Constants.ACCOUNT_TYPE);
+
+ Account account = new Account(Constants.ACCOUNT_NAME, Constants.ACCOUNT_TYPE);
+ if (accounts.length == 0) {
+ if (!manager.addAccountExplicitly(account, null, null)) {
+ Log.d(Constants.TAG, "account already exists, the account is null, or another error occured");
+ }
+ }
+
+ ContentResolver.setIsSyncable(account, ContactsContract.AUTHORITY, 1);
+
+ // Enable by default for Android < 6, on Android >= 6 runtime permissions are required
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, true);
+ }
+ } catch (SecurityException e) {
+ Log.e(Constants.TAG, "SecurityException when adding the account", e);
+ Toast.makeText(context, R.string.reinstall_openkeychain, Toast.LENGTH_LONG).show();
+ }
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java
index 122eb6cf4..fc3224e39 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java
@@ -512,7 +512,7 @@ public class KeyserverSyncAdapterService extends Service {
Account account = new Account(Constants.ACCOUNT_NAME, Constants.ACCOUNT_TYPE);
if (accounts.length == 0) {
if (!manager.addAccountExplicitly(account, null, null)) {
- Log.e(Constants.TAG, "Adding account failed!");
+ Log.d(Constants.TAG, "account already exists, the account is null, or another error occured");
}
}
// for keyserver sync