aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service
diff options
context:
space:
mode:
authorAdithya Abraham Philip <adithyaphilip@gmail.com>2016-01-27 23:54:38 +0530
committerAdithya Abraham Philip <adithyaphilip@gmail.com>2016-01-27 23:58:55 +0530
commit160362d2bfa6254748b84027db958005a16c92f2 (patch)
tree70895ede073df6264a8c6de3de770e4188a93b2a /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service
parent025d2c5d29d8d9730e5ef5a3b01b425ba6c99957 (diff)
downloadopen-keychain-160362d2bfa6254748b84027db958005a16c92f2.tar.gz
open-keychain-160362d2bfa6254748b84027db958005a16c92f2.tar.bz2
open-keychain-160362d2bfa6254748b84027db958005a16c92f2.zip
prevent rare KeyserverSyncAdapterService crash
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java17
1 files changed, 11 insertions, 6 deletions
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 bacf56302..1c59782fc 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java
@@ -1,7 +1,6 @@
package org.sufficientlysecure.keychain.service;
import android.accounts.Account;
-import android.accounts.AccountManager;
import android.app.AlarmManager;
import android.app.Notification;
import android.app.NotificationManager;
@@ -28,6 +27,7 @@ import android.os.SystemClock;
import android.support.v4.app.NotificationCompat;
import org.sufficientlysecure.keychain.Constants;
+import org.sufficientlysecure.keychain.KeychainApplication;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing;
import org.sufficientlysecure.keychain.operations.ImportOperation;
@@ -510,8 +510,12 @@ public class KeyserverSyncAdapterService extends Service {
}
public static void enableKeyserverSync(Context context) {
- AccountManager manager = AccountManager.get(context);
- Account account = manager.getAccountsByType(Constants.ACCOUNT_TYPE)[0];
+ Account account = KeychainApplication.createAccountIfNecessary(context);
+
+ if (account == null) {
+ // account failed to be created for some reason, nothing we can do here
+ return;
+ }
ContentResolver.setIsSyncable(account, Constants.PROVIDER_AUTHORITY, 1);
ContentResolver.setSyncAutomatically(account, Constants.PROVIDER_AUTHORITY, true);
@@ -524,10 +528,11 @@ public class KeyserverSyncAdapterService extends Service {
}
private boolean isSyncEnabled() {
- AccountManager manager = AccountManager.get(this);
- Account account = manager.getAccountsByType(Constants.ACCOUNT_TYPE)[0];
+ Account account = KeychainApplication.createAccountIfNecessary(this);
- return ContentResolver.getSyncAutomatically(account, Constants.PROVIDER_AUTHORITY);
+ // if account is null, it could not be created for some reason, so sync cannot exist
+ return account != null
+ && ContentResolver.getSyncAutomatically(account, Constants.PROVIDER_AUTHORITY);
}
private void startServiceWithUpdateAll() {