From 2d9edf3832e82eee9ca8526c2fe46cf894025b78 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 5 Sep 2020 14:32:59 +0200 Subject: [PATCH] drop ContactSync feature --- OpenKeychain/src/main/AndroidManifest.xml | 45 ----- .../keychain/KeychainApplication.java | 36 +--- .../keychain/operations/CertifyOperation.java | 4 - .../keychain/operations/DeleteOperation.java | 4 - .../keychain/operations/EditKeyOperation.java | 4 - .../keychain/operations/ImportOperation.java | 15 +- .../service/ContactSyncAdapterService.java | 177 ------------------ .../keychain/service/DummyAccountService.java | 133 ------------- .../keychain/ui/SettingsActivity.java | 140 +------------- .../src/main/res/values-ar/strings.xml | 3 +- .../src/main/res/values-ca/strings.xml | 1 - .../src/main/res/values-cs/strings.xml | 1 - .../src/main/res/values-de/strings.xml | 1 - .../src/main/res/values-es-rMX/strings.xml | 3 +- .../src/main/res/values-es/strings.xml | 3 +- .../src/main/res/values-eu/strings.xml | 3 +- .../src/main/res/values-fr/strings.xml | 1 - .../src/main/res/values-gl/strings.xml | 3 +- .../src/main/res/values-hu/strings.xml | 1 - .../src/main/res/values-it/strings.xml | 3 +- .../src/main/res/values-ja/strings.xml | 1 - .../src/main/res/values-ko/strings.xml | 3 +- .../src/main/res/values-nb/strings.xml | 3 +- .../src/main/res/values-nl-rBE/strings.xml | 3 +- .../src/main/res/values-nl/strings.xml | 1 - .../src/main/res/values-pl/strings.xml | 3 +- .../src/main/res/values-pt-rBR/strings.xml | 3 +- .../src/main/res/values-ru/strings.xml | 1 - .../src/main/res/values-sr/strings.xml | 3 +- .../src/main/res/values-sv/strings.xml | 1 - .../src/main/res/values-uk/strings.xml | 3 +- .../src/main/res/values-vi/strings.xml | 3 +- .../src/main/res/values-zh-rTW/strings.xml | 3 +- .../src/main/res/values-zh/strings.xml | 1 - OpenKeychain/src/main/res/values/strings.xml | 5 - .../src/main/res/xml/account_desc.xml | 6 - .../main/res/xml/sync_adapter_contacts.xml | 8 - .../xml/sync_adapter_contacts_structure.xml | 6 - .../src/main/res/xml/sync_preferences.xml | 9 +- 39 files changed, 23 insertions(+), 624 deletions(-) delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/DummyAccountService.java delete mode 100644 OpenKeychain/src/main/res/xml/account_desc.xml delete mode 100644 OpenKeychain/src/main/res/xml/sync_adapter_contacts.xml delete mode 100644 OpenKeychain/src/main/res/xml/sync_adapter_contacts_structure.xml diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml index eb99d3ff6..39d9bea81 100644 --- a/OpenKeychain/src/main/AndroidManifest.xml +++ b/OpenKeychain/src/main/AndroidManifest.xml @@ -54,21 +54,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - qrCodeCache = new HashMap<>(); @Override diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java index cea093a48..e1bafb87c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java @@ -43,7 +43,6 @@ import org.sufficientlysecure.keychain.pgp.UncachedKeyRing; import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException; import org.sufficientlysecure.keychain.service.CertifyActionsParcel; import org.sufficientlysecure.keychain.service.CertifyActionsParcel.CertifyAction; -import org.sufficientlysecure.keychain.service.ContactSyncAdapterService; import org.sufficientlysecure.keychain.service.UploadKeyringParcel; import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; import org.sufficientlysecure.keychain.service.input.RequiredInputParcel; @@ -254,9 +253,6 @@ public class CertifyOperation extends BaseReadWriteOperation int result = DeleteResult.RESULT_OK; if (success > 0) { - // make sure new data is synced into contacts - ContactSyncAdapterService.requestContactsSync(); - log.add(LogType.MSG_DEL_OK, 0, success); } if (fail > 0) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/EditKeyOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/EditKeyOperation.java index 573fba8f2..15b3b9b10 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/EditKeyOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/EditKeyOperation.java @@ -38,7 +38,6 @@ import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKeyRing; import org.sufficientlysecure.keychain.pgp.PgpKeyOperation; import org.sufficientlysecure.keychain.pgp.Progressable; import org.sufficientlysecure.keychain.pgp.UncachedKeyRing; -import org.sufficientlysecure.keychain.service.ContactSyncAdapterService; import org.sufficientlysecure.keychain.service.SaveKeyringParcel; import org.sufficientlysecure.keychain.service.UploadKeyringParcel; import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; @@ -182,9 +181,6 @@ public class EditKeyOperation extends BaseReadWriteOperation updateProgress(R.string.progress_done, 100, 100); - // make sure new data is synced into contacts - ContactSyncAdapterService.requestContactsSync(); - log.add(LogType.MSG_ED_SUCCESS, 0); return new EditKeyResult(EditKeyResult.RESULT_OK, log, ring.getMasterKeyId()); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportOperation.java index 833b40ec8..a55ff6214 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportOperation.java @@ -32,9 +32,9 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import android.content.Context; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; - import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.daos.KeyMetadataDao; import org.sufficientlysecure.keychain.daos.KeyWritableRepository; @@ -55,7 +55,6 @@ import org.sufficientlysecure.keychain.pgp.CanonicalizedKeyRing; import org.sufficientlysecure.keychain.pgp.Progressable; import org.sufficientlysecure.keychain.pgp.UncachedKeyRing; import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException; -import org.sufficientlysecure.keychain.service.ContactSyncAdapterService; import org.sufficientlysecure.keychain.service.ImportKeyringParcel; import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; import org.sufficientlysecure.keychain.service.input.RequiredInputParcel; @@ -134,9 +133,6 @@ public class ImportOperation extends BaseReadWriteOperation } /** - * Since the introduction of multithreaded import, we expect calling functions to handle the - * contact-to-key sync i.e ContactSyncAdapterService.requestContactsSync() - * * @param entries keys to import * @param numTotalKeys number of keys to import * @param hkpKeyserver contains uri of keyserver to import from, if it is an import from cloud @@ -274,11 +270,6 @@ public class ImportOperation extends BaseReadWriteOperation } } - // Special: make sure new data is synced into contacts - // disabling sync right now since it reduces speed while multi-threading - // so, we expect calling functions to take care of it. KeychainService handles this - // ContactSyncAdapterService.requestContactsSync(); - // convert to long array long[] importedMasterKeyIdsArray = new long[importedMasterKeyIds.size()]; for (int i = 0; i < importedMasterKeyIds.size(); ++i) { @@ -476,10 +467,6 @@ public class ImportOperation extends BaseReadWriteOperation result = multiThreadedKeyImport(keyList, keyServer, proxy, skipSave, forceReinsert); } - - if (!skipSave) { - ContactSyncAdapterService.requestContactsSync(); - } return result; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java deleted file mode 100644 index ea5a43221..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright (C) 2017 Schürmann & Breitmoser GbR - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.sufficientlysecure.keychain.service; - - -import android.accounts.Account; -import android.app.PendingIntent; -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.Bundle; -import android.os.IBinder; -import android.preference.PreferenceActivity; -import android.provider.ContactsContract; -import androidx.core.app.NotificationCompat; -import androidx.core.app.NotificationManagerCompat; -import androidx.core.content.ContextCompat; - -import org.sufficientlysecure.keychain.Constants; -import org.sufficientlysecure.keychain.KeychainApplication; -import org.sufficientlysecure.keychain.NotificationChannelManager; -import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.ui.SettingsActivity; -import org.sufficientlysecure.keychain.util.ContactHelper; -import timber.log.Timber; - - -public class ContactSyncAdapterService extends Service { - - private static final int NOTIFICATION_ID_SYNC_SETTINGS = 13; - - private class ContactSyncAdapter extends AbstractThreadedSyncAdapter { - -// private final AtomicBoolean importDone = new AtomicBoolean(false); - - public ContactSyncAdapter() { - super(ContactSyncAdapterService.this, true); - } - - @Override - public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, - final SyncResult syncResult) { - Timber.d("Performing a contact sync!"); - - new ContactHelper(ContactSyncAdapterService.this).writeKeysToContacts(); - -// importKeys(); - } - - @Override - public void onSecurityException(Account account, Bundle extras, String authority, SyncResult syncResult) { - super.onSecurityException(account, extras, authority, syncResult); - - // deactivate sync - ContentResolver.setSyncAutomatically(account, authority, false); - - NotificationChannelManager.getInstance(getContext()).createNotificationChannelsIfNecessary(); - - // show notification linking to sync settings - Intent resultIntent = new Intent(ContactSyncAdapterService.this, SettingsActivity.class); - resultIntent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT, - SettingsActivity.SyncPrefsFragment.class.getName()); - PendingIntent resultPendingIntent = - PendingIntent.getActivity( - ContactSyncAdapterService.this, - 0, - resultIntent, - PendingIntent.FLAG_UPDATE_CURRENT - ); - NotificationCompat.Builder mBuilder = - new NotificationCompat.Builder(ContactSyncAdapterService.this, NotificationChannelManager.PERMISSION_REQUESTS) - .setAutoCancel(true) - .setSmallIcon(R.drawable.ic_stat_notify_24dp) - .setColor(getResources().getColor(R.color.primary)) - .setContentTitle(getString(R.string.sync_notification_permission_required_title)) - .setContentText(getString(R.string.sync_notification_permission_required_text)) - .setContentIntent(resultPendingIntent); - NotificationManagerCompat.from(ContactSyncAdapterService.this) - .notify(NOTIFICATION_ID_SYNC_SETTINGS, mBuilder.build()); - } - } - - @Override - public IBinder onBind(Intent intent) { - return new ContactSyncAdapter().getSyncAdapterBinder(); - } - - public static void requestContactsSync() { - // if user has disabled automatic sync, do nothing - boolean isSyncEnabled = ContentResolver.getSyncAutomatically(new Account - (Constants.ACCOUNT_NAME, Constants.ACCOUNT_TYPE), ContactsContract.AUTHORITY); - - if (!isSyncEnabled) { - return; - } - - Bundle extras = new Bundle(); - // no need to wait, do it immediately - extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true); - extras.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true); - ContentResolver.requestSync( - new Account(Constants.ACCOUNT_NAME, Constants.ACCOUNT_TYPE), - ContactsContract.AUTHORITY, - extras); - } - - public static void enableContactsSync(Context context) { - Account account = KeychainApplication.createAccountIfNecessary(context); - if (account == null) { - return; - } - - ContentResolver.setIsSyncable(account, ContactsContract.AUTHORITY, 1); - ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, true); - } - -// TODO: Import is currently disabled, until we implement proper origin management -// private static void importKeys() { -// importDone.set(false); -// KeychainApplication.setupAccountAsNeeded(ContactSyncAdapterService.this); -// EmailKeyHelper.importContacts(getContext(), new Messenger(new Handler(Looper.getMainLooper(), -// new Handler.Callback() { -// @Override -// public boolean handleMessage(Message msg) { -// Bundle data = msg.getInputData(); -// switch (msg.arg1) { -// case KeychainIntentServiceHandler.MESSAGE_OKAY: -// Log.d(Constants.TAG, "Syncing... Done."); -// synchronized (importDone) { -// importDone.set(true); -// importDone.notifyAll(); -// } -// return true; -// case KeychainIntentServiceHandler.MESSAGE_UPDATE_PROGRESS: -// if (data.containsKey(KeychainIntentServiceHandler.DATA_PROGRESS) && -// data.containsKey(KeychainIntentServiceHandler.DATA_PROGRESS_MAX)) { -// Log.d(Constants.TAG, "Syncing... Progress: " + -// data.getInt(KeychainIntentServiceHandler.DATA_PROGRESS) + "/" + -// data.getInt(KeychainIntentServiceHandler.DATA_PROGRESS_MAX)); -// return false; -// } -// default: -// Log.d(Constants.TAG, "Syncing... " + msg.toString()); -// return false; -// } -// } -// }))); -// synchronized (importDone) { -// try { -// if (!importDone.get()) importDone.wait(); -// } catch (InterruptedException e) { -// Log.w(Constants.TAG, e); -// return; -// } -// } -// } - -} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/DummyAccountService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/DummyAccountService.java deleted file mode 100644 index 14b0db553..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/DummyAccountService.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (C) 2017 Schürmann & Breitmoser GbR - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.sufficientlysecure.keychain.service; - -import android.accounts.AbstractAccountAuthenticator; -import android.accounts.Account; -import android.accounts.AccountAuthenticatorResponse; -import android.accounts.NetworkErrorException; -import android.app.Service; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.os.IBinder; -import android.os.Message; -import android.widget.Toast; - -import org.sufficientlysecure.keychain.R; -import timber.log.Timber; - - -/** - * This service actually does nothing, it's sole task is to show a Toast if the use tries to create an account. - */ -public class DummyAccountService extends Service { - - private class Toaster { - private static final String TOAST_MESSAGE = "toast_message"; - private Context context; - private Handler handler = new Handler(new Handler.Callback() { - @Override - public boolean handleMessage(Message msg) { - Toast.makeText(context, msg.getData().getString(TOAST_MESSAGE), Toast.LENGTH_LONG).show(); - return true; - } - }); - - private Toaster(Context context) { - this.context = context; - } - - public void toast(int resourceId) { - toast(context.getString(resourceId)); - } - - public void toast(String message) { - Message msg = new Message(); - Bundle bundle = new Bundle(); - bundle.putString(TOAST_MESSAGE, message); - msg.setData(bundle); - handler.sendMessage(msg); - } - } - - private class Authenticator extends AbstractAccountAuthenticator { - - public Authenticator() { - super(DummyAccountService.this); - } - - @Override - public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) { - Timber.d("DummyAccountService.editProperties"); - return null; - } - - @Override - public Bundle addAccount(AccountAuthenticatorResponse response, String accountType, String authTokenType, - String[] requiredFeatures, Bundle options) throws NetworkErrorException { - response.onResult(new Bundle()); - toaster.toast(R.string.account_no_manual_account_creation); - Timber.d("DummyAccountService.addAccount"); - return null; - } - - @Override - public Bundle confirmCredentials(AccountAuthenticatorResponse response, Account account, Bundle options) - throws NetworkErrorException { - Timber.d("DummyAccountService.confirmCredentials"); - return null; - } - - @Override - public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account, String authTokenType, - Bundle options) throws NetworkErrorException { - Timber.d("DummyAccountService.getAuthToken"); - return null; - } - - @Override - public String getAuthTokenLabel(String authTokenType) { - Timber.d("DummyAccountService.getAuthTokenLabel"); - return null; - } - - @Override - public Bundle updateCredentials(AccountAuthenticatorResponse response, Account account, String authTokenType, - Bundle options) throws NetworkErrorException { - Timber.d("DummyAccountService.updateCredentials"); - return null; - } - - @Override - public Bundle hasFeatures(AccountAuthenticatorResponse response, Account account, String[] features) - throws NetworkErrorException { - Timber.d("DummyAccountService.hasFeatures"); - return null; - } - } - - private Toaster toaster; - - @Override - public IBinder onBind(Intent intent) { - toaster = new Toaster(this); - return new Authenticator().getIBinder(); - } -} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java index f5ab1ea69..993aa6c97 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java @@ -23,16 +23,9 @@ import java.security.KeyStoreException; import java.util.ArrayList; import java.util.List; -import android.Manifest; -import android.accounts.Account; -import android.accounts.AccountManager; -import android.annotation.TargetApi; import android.app.Activity; -import android.content.ContentResolver; import android.content.Context; import android.content.Intent; -import android.content.pm.PackageManager; -import android.os.Build; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.ListPreference; @@ -40,17 +33,13 @@ import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.preference.SwitchPreference; -import android.provider.ContactsContract; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; -import androidx.annotation.NonNull; import androidx.appcompat.widget.Toolbar; -import androidx.core.content.ContextCompat; import org.sufficientlysecure.keychain.Constants; -import org.sufficientlysecure.keychain.KeychainApplication; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.compatibility.AppCompatPreferenceActivity; import org.sufficientlysecure.keychain.keyimport.HkpKeyserverAddress; @@ -402,11 +391,8 @@ public class SettingsActivity extends AppCompatPreferenceActivity { // Load the preferences from an XML resource addPreferencesFromResource(R.xml.sync_preferences); - findPreference(Constants.Pref.SYNC_KEYSERVER).setOnPreferenceChangeListener( - (preference, newValue) -> { - return true; - }); + (preference, newValue) -> true); } @Override @@ -414,130 +400,6 @@ public class SettingsActivity extends AppCompatPreferenceActivity { super.onStop(); KeyserverSyncManager.updateKeyserverSyncScheduleAsync(getActivity(), true); } - - @Override - public void onResume() { - super.onResume(); - // this needs to be done in onResume since the user can change sync values from Android - // settings and we need to reflect that change when the user navigates back - final Account account = KeychainApplication.createAccountIfNecessary(getActivity()); - // for contacts sync - initializeSyncCheckBox( - (SwitchPreference) findPreference(Constants.Pref.SYNC_CONTACTS), - account, - ContactsContract.AUTHORITY - ); - } - - private void initializeSyncCheckBox(final SwitchPreference syncCheckBox, - final Account account, - final String authority) { - // account is null if it could not be created for some reason - boolean syncEnabled = - account != null - && ContentResolver.getSyncAutomatically(account, authority) - && checkContactsPermission(authority); - syncCheckBox.setChecked(syncEnabled); - setSummary(syncCheckBox, authority, syncEnabled); - - syncCheckBox.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @TargetApi(Build.VERSION_CODES.M) - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - boolean syncEnabled = (Boolean) newValue; - if (syncEnabled) { - if (checkContactsPermission(authority)) { - ContentResolver.setSyncAutomatically(account, authority, true); - setSummary(syncCheckBox, authority, true); - return true; - } else { - requestPermissions( - new String[]{Manifest.permission.READ_CONTACTS}, - REQUEST_PERMISSION_READ_CONTACTS); - // don't update preference - return false; - } - } else { - if (account == null) { - // if account could not be created for some reason, - // we can't have our sync - return false; - } - // disable syncs - ContentResolver.setSyncAutomatically(account, authority, false); - // cancel any ongoing/pending syncs - ContentResolver.cancelSync(account, authority); - setSummary(syncCheckBox, authority, false); - return true; - } - } - }); - } - - private boolean checkContactsPermission(String authority) { - if (!ContactsContract.AUTHORITY.equals(authority)) { - // provides convenience of not using separate checks for keyserver and contact sync - // in initializeSyncCheckBox - return true; - } - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - return true; - } - - if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CONTACTS) - == PackageManager.PERMISSION_GRANTED) { - return true; - } - - return false; - } - - @Override - public void onRequestPermissionsResult(int requestCode, - @NonNull String[] permissions, - @NonNull int[] grantResults) { - - if (requestCode != REQUEST_PERMISSION_READ_CONTACTS) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - return; - } - - boolean permissionWasGranted = grantResults.length > 0 - && grantResults[0] == PackageManager.PERMISSION_GRANTED; - - if (permissionWasGranted) { - // permission granted -> enable contact linking - AccountManager manager = AccountManager.get(getActivity()); - final Account account = manager.getAccountsByType(Constants.ACCOUNT_TYPE)[0]; - SwitchPreference pref = (SwitchPreference) findPreference(Constants.Pref.SYNC_CONTACTS); - ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, true); - setSummary(pref, ContactsContract.AUTHORITY, true); - pref.setChecked(true); - } - } - - private void setSummary(SwitchPreference syncCheckBox, String authority, - boolean checked) { - switch (authority) { - case Constants.PROVIDER_AUTHORITY: { - if (checked) { - syncCheckBox.setSummary(R.string.label_sync_settings_keyserver_summary_on); - } else { - syncCheckBox.setSummary(R.string.label_sync_settings_keyserver_summary_off); - } - break; - } - case ContactsContract.AUTHORITY: { - if (checked) { - syncCheckBox.setSummary(R.string.label_sync_settings_contacts_summary_on); - } else { - syncCheckBox.setSummary(R.string.label_sync_settings_contacts_summary_off); - } - break; - } - } - } } /** diff --git a/OpenKeychain/src/main/res/values-ar/strings.xml b/OpenKeychain/src/main/res/values-ar/strings.xml index 7db0b8351..720e0aee1 100644 --- a/OpenKeychain/src/main/res/values-ar/strings.xml +++ b/OpenKeychain/src/main/res/values-ar/strings.xml @@ -178,8 +178,7 @@ ربط المفاتيح بجهات الإتصال لن يتم ربط المفاتيح الجديدة بجهات الإتصال - تحديثات تلقائية للمفاتيح - تحذير + تحذير فعّل تور يتطلب نتصيب تطبيق أوربوت diff --git a/OpenKeychain/src/main/res/values-ca/strings.xml b/OpenKeychain/src/main/res/values-ca/strings.xml index bc3fa8336..9de346d1a 100644 --- a/OpenKeychain/src/main/res/values-ca/strings.xml +++ b/OpenKeychain/src/main/res/values-ca/strings.xml @@ -208,7 +208,6 @@ Enllaça claus amb contactes basant-se amb noms i adreces de correu. Això succeeix completament fora de línia en el vostre dispositiu. Les noves claus no s\'enllaçaran amb els contactes - Actualització de claus automàticament Advertència Proves de Keybase.io Contacta amb keybase.io per proves de clau i mostra-les cada vegada que es mostri una clau diff --git a/OpenKeychain/src/main/res/values-cs/strings.xml b/OpenKeychain/src/main/res/values-cs/strings.xml index 65edf4848..c7ef0cf67 100644 --- a/OpenKeychain/src/main/res/values-cs/strings.xml +++ b/OpenKeychain/src/main/res/values-cs/strings.xml @@ -212,7 +212,6 @@ Protojit klíče s kontakty na základě jmen a emailových adres. Odehrává se kompletně offline na vašem zařízení. Nové klíče nebudou propojeny s kontakty - Automaticky aktualizovat klíč Varovnání Tyto funkce nejsou ještě dokončené nebo neprošli uživatelským testováním/bezpečnostním auditem. Prosím, nespoléhejte na jejich zabezpečení a nehlašte problémy s nimi spojené, pokud na ně narazíte. Keybase.io Proofs diff --git a/OpenKeychain/src/main/res/values-de/strings.xml b/OpenKeychain/src/main/res/values-de/strings.xml index 4630b660a..be9a6813b 100644 --- a/OpenKeychain/src/main/res/values-de/strings.xml +++ b/OpenKeychain/src/main/res/values-de/strings.xml @@ -212,7 +212,6 @@ Schlüssel basierend auf Namen und E-Mail-Adressen mit Kontakten verknüpfen. Das alles findet komplett offline auf deinem Gerät statt. Neue Schlüssel werden nicht mit Kontakten verknüpft - Automatische Schlüsselaktualisierung Warnung Diese Funktionen sind noch nicht final oder das Ergebnis von Benutzererfahrungs-/Sicherheitsuntersuchungen. Verlasse dich daher nicht auf deren Sicherheit und melde uns bitte keine auftretenden Probleme! Keybase.io-Nachweise diff --git a/OpenKeychain/src/main/res/values-es-rMX/strings.xml b/OpenKeychain/src/main/res/values-es-rMX/strings.xml index b65004e8e..f3265642a 100644 --- a/OpenKeychain/src/main/res/values-es-rMX/strings.xml +++ b/OpenKeychain/src/main/res/values-es-rMX/strings.xml @@ -210,8 +210,7 @@ Vincular claves a contactos basándose en nombres y direcciones de correo electrónico. Esto ocurre sin conexión completamente en tu dispositivo. Nuevas claves no serán vinculadas a contactos - Actualizaciones automáticas de claves - Advertencia + Advertencia Activar Tor Requiere Orbot instalado diff --git a/OpenKeychain/src/main/res/values-es/strings.xml b/OpenKeychain/src/main/res/values-es/strings.xml index fc9d25e3f..d9fc6303f 100644 --- a/OpenKeychain/src/main/res/values-es/strings.xml +++ b/OpenKeychain/src/main/res/values-es/strings.xml @@ -212,8 +212,7 @@ Vincula claves con contactos basándose en nombres y direcciones de correo electrónico. Esto sucede con su dispositivo completamente desconectado. Las claves nuevas no se vincularán a contactos - Actualizaciones automáticas de claves - Advertencia + Advertencia Estas características todavía no están finalizadas o no se han obtenido los resultados de experiencia del usuario y la investigación de seguridad. Por tanto, no confíe en su seguridad y, por favor, ¡no informe de los problemas que encuentre! Comprobantes de Keybase.io Contacta con keybase.io para obtener comprobantes de clave y muestrelos cada vez que se muestra una clave diff --git a/OpenKeychain/src/main/res/values-eu/strings.xml b/OpenKeychain/src/main/res/values-eu/strings.xml index 0ce526c52..4876a308f 100644 --- a/OpenKeychain/src/main/res/values-eu/strings.xml +++ b/OpenKeychain/src/main/res/values-eu/strings.xml @@ -206,8 +206,7 @@ Lotu giltzak harremanekin izen eta post@ helbideetan ohinarrituz. Hau erabat lineaz-kanpo gertatzen da zure gailuan. Giltza berriak ez dira harremanekin lotuko - Berezgaitasunez eguneratu giltzak - Kontuz + Kontuz Ezaugarri hauek ez dute amaitu edo erabiltzaile jarduera/segurtasun emaitzak erdietsita. Honela, ez dira beren segurtasunean ohinarritzen eta mesedez ez jakinarazi aurkitzen dituzun arazoak! Jarri harremanetan keybase.io giltzak probatzeko eta erakutsi hauek giltza bat erakusten den bakoitzean (Ikurrak eta ikusleiho asko oraindik ez daude azalgai ilunarekin zehaztuta) diff --git a/OpenKeychain/src/main/res/values-fr/strings.xml b/OpenKeychain/src/main/res/values-fr/strings.xml index 3a023e616..3b54718ac 100644 --- a/OpenKeychain/src/main/res/values-fr/strings.xml +++ b/OpenKeychain/src/main/res/values-fr/strings.xml @@ -212,7 +212,6 @@ Relier les clés aux contacts d’après les noms et les adresses courriel. Cela se passe entièrement hors ligne sur votre appareil. Les nouvelles clés ne seront pas reliées aux contacts - Mises à jour automatiques des clés Avertissement Ces fonctions ne sont pas encore terminées et n’ont pas fait l’objet de recherche sur leur convivialité ni leur sécurité. Par conséquent, ne vous fiez pas à leur sécurité et veuillez ne pas signaler les problèmes que vous rencontrez. Preuves keybase.io diff --git a/OpenKeychain/src/main/res/values-gl/strings.xml b/OpenKeychain/src/main/res/values-gl/strings.xml index 35927297c..16b220749 100644 --- a/OpenKeychain/src/main/res/values-gl/strings.xml +++ b/OpenKeychain/src/main/res/values-gl/strings.xml @@ -211,8 +211,7 @@ Ligar chaves a contactos baseándose en nomes e enderezos de correo electrónico. Isto acontece sen precisar conexión a rede no seu dispositivo. As novas chaves non se ligarán aos contactos - Actualización automática de chaves - Aviso + Aviso Estas características aínda non están rematadas ou son resultado da investigación da experiencia de usuaria e/ou seguridade. Xa que logo, non confíe na súa seguridade e por favor non informe sobre os fallos que poida atopar! probas de Keybase.io Pedirlle probas de chave a keybase.io e expoñelas cada vez que se mostra a chave diff --git a/OpenKeychain/src/main/res/values-hu/strings.xml b/OpenKeychain/src/main/res/values-hu/strings.xml index 515c3268e..4d438f777 100644 --- a/OpenKeychain/src/main/res/values-hu/strings.xml +++ b/OpenKeychain/src/main/res/values-hu/strings.xml @@ -212,7 +212,6 @@ Kulcsok összekapcsolása partnerekkel a nevük és az e-mail címük alapján. Ez teljesen mértékben hálózati kapcsolat nélkül történik az ön eszközén. Az új kulcsok nem lesznek összekapcsolva partnerekkel - Automatikus kulcsfrissítések Figyelmeztetés Ezek a funkciók még nincsenek befejezve, vagy felhasználói élmény és biztonsági kutatást eredményei. Emiatt ne bízzon a biztonságukban, és ne jelentse a felmerülő hibákat! Keybase.io igazolások diff --git a/OpenKeychain/src/main/res/values-it/strings.xml b/OpenKeychain/src/main/res/values-it/strings.xml index 6e8273515..956f60651 100644 --- a/OpenKeychain/src/main/res/values-it/strings.xml +++ b/OpenKeychain/src/main/res/values-it/strings.xml @@ -194,8 +194,7 @@ Collega le chiavi ai contatti in base ai nomi e indirizzi email. Ciò avviene completamente offline sul tuo dispositivo. Le chiavi nuove non verranno collegate ai contatti - Aggiornamenti automatici delle chiavi - Attenzione + Attenzione Queste funzioni non sono ancora finite o testate da utenti/ricerche di sicurezza. Perciò non contare sulla loro sicurezza e per favore non segnalare i problemi che riscontri! Contatta keybase.io per avere prove e mostrale ogni volta che visualizzo una chiave (Le icone e molte schermate non sono ancora modificate correttamente per il tema scuro) diff --git a/OpenKeychain/src/main/res/values-ja/strings.xml b/OpenKeychain/src/main/res/values-ja/strings.xml index efe656435..a296086fa 100644 --- a/OpenKeychain/src/main/res/values-ja/strings.xml +++ b/OpenKeychain/src/main/res/values-ja/strings.xml @@ -212,7 +212,6 @@ オフランで完結して、名前とメールアドレスに基づいて、鍵を連絡先にリンク 新しい鍵は連絡先と関連付けしない - 鍵の自動アップデート 注意 これらの機能はまだ完成していないか、ユーザーエクスペリエンス/セキュリティ研究の結果ではありません。そのため、このセキュリティに依存したり、遭遇した問題を報告しないでください! Keybase.io 検証 diff --git a/OpenKeychain/src/main/res/values-ko/strings.xml b/OpenKeychain/src/main/res/values-ko/strings.xml index f219a4076..50c8ca402 100644 --- a/OpenKeychain/src/main/res/values-ko/strings.xml +++ b/OpenKeychain/src/main/res/values-ko/strings.xml @@ -202,8 +202,7 @@ 이름과 이메일 주소에 기초해 키를 연락처에 연결합니다. 이 작업은 완전히 오프라인에서만 수행됩니다. 새 키를 앞으로 연락처에 연결하지 않음 - 자동 키 갱신 - 경고 + 경고 이 기능들은 아직 완성되지 않았거나 유저 경험/보안 연구의 결과가 아닙니다. 그러니 이 기능의 보안성에 의존하거나 겪는 문제를 보고하지 말아주세요! keybase.io에 연결해서 키가 표시될 때 마다 키 증명을 표시 (아이콘이나 많은 화면이 검은 테마에 알맞게 아직 조정되지 않았습니다) diff --git a/OpenKeychain/src/main/res/values-nb/strings.xml b/OpenKeychain/src/main/res/values-nb/strings.xml index 5911b5878..d12329dcb 100644 --- a/OpenKeychain/src/main/res/values-nb/strings.xml +++ b/OpenKeychain/src/main/res/values-nb/strings.xml @@ -202,8 +202,7 @@ Lenk nøkler til kontakter basert på navn og e-postadresser. Dette skjer helt frakoblet på din enhet. Nye nøkler vil ikke lenkes til kontakter - Automatiske nøkkeloppdateringer - Advarsel + Advarsel Disse funksjonene er ikke ferdige enda, eller resultat av brukererfaring/sikkerhetsforskning. Som sådan, bør du ikke stole på at de er sikre, og ikke rapportere feil du kommer over! Keybase.io-bevis Kontakt keybase.io for nøkkelbevis og vis dem hver gang en nøkkel vises diff --git a/OpenKeychain/src/main/res/values-nl-rBE/strings.xml b/OpenKeychain/src/main/res/values-nl-rBE/strings.xml index d9d3b947f..e4042024f 100644 --- a/OpenKeychain/src/main/res/values-nl-rBE/strings.xml +++ b/OpenKeychain/src/main/res/values-nl-rBE/strings.xml @@ -212,8 +212,7 @@ Koppel sleutels aan contacten gebaseerd op namen en e-mailadressen. Dit gebeurt volledig offline op je apparaat. Nieuwe sleutels zullen niet worden gekoppeld aan contacten - Automatische sleutelupdates - Waarschuwing + Waarschuwing Deze functies zijn nog niet afgewerkt of zijn resultaten van gebruikerservaringen/beveiligingsonderzoek. Vertrouw daarom niet op hun beveiliging en rapporteer geen problemen die je ervaart! Keybase.io-bewijzen Maak contact met keybase.io voor bevestigingen van sleutels en toon deze telkens wanneer een sleutel wordt weergegeven diff --git a/OpenKeychain/src/main/res/values-nl/strings.xml b/OpenKeychain/src/main/res/values-nl/strings.xml index 4770a05d1..cc68f64e1 100644 --- a/OpenKeychain/src/main/res/values-nl/strings.xml +++ b/OpenKeychain/src/main/res/values-nl/strings.xml @@ -212,7 +212,6 @@ Koppel sleutels aan contacten gebaseerd op namen en e-mailadressen. Dit gebeurt volledig offline op je apparaat. Nieuwe sleutels zullen niet worden gekoppeld aan contacten - Automatische sleutelupdates Waarschuwing Deze functies zijn nog niet afgewerkt of zijn resultaten van gebruikerservaringen/beveiligingsonderzoek. Vertrouw daarom niet op hun beveiliging en rapporteer geen problemen die je ervaart! Keybase.io-bewijzen diff --git a/OpenKeychain/src/main/res/values-pl/strings.xml b/OpenKeychain/src/main/res/values-pl/strings.xml index 3b8d6db21..9d3151aa5 100644 --- a/OpenKeychain/src/main/res/values-pl/strings.xml +++ b/OpenKeychain/src/main/res/values-pl/strings.xml @@ -212,8 +212,7 @@ Połącz klucze z kontaktami używając nazw i adresów e-mail. Ta operacja jest wykonywana offline wyłączenie na tym urządzeniu. Nowe klucze nie będą połączone z kontaktami - Automatyczne aktualizacje kluczy - Ostrzeżenie + Ostrzeżenie Te funkcje nie są jeszcze skończone lub są wynikiem badań bezpieczeństwa / wrażeń użytkownika. Tak więc nie polegaj na ich bezpieczeństwie i nie zgłaszaj problemów z nimi związanych! Dowody keybase.io Sprawdź keybase.io dla dowodów kluczy i pokaż je za każdym razem kiedy klucz jest wyświetlany diff --git a/OpenKeychain/src/main/res/values-pt-rBR/strings.xml b/OpenKeychain/src/main/res/values-pt-rBR/strings.xml index 662cba02c..6735b8a90 100644 --- a/OpenKeychain/src/main/res/values-pt-rBR/strings.xml +++ b/OpenKeychain/src/main/res/values-pt-rBR/strings.xml @@ -212,8 +212,7 @@ Vincula chaves a contatos com base em nomes e endereços de email. Isto acontece completamente off-line em seu dispositivo. Novas chaves não serão vinculadas aos contatos - Atualização automática de chaves - Aviso + Aviso Esses recursos ainda não estão finalizados ou resultam de pesquisas de experiência/segurança do usuário. Dessa forma, não confie em sua segurança e, por favor, não relate problemas que encontre! Provas Keybase.io Contate o keybase.io para as provas de chaves e mostre-as toda vez que uma chave for exibida diff --git a/OpenKeychain/src/main/res/values-ru/strings.xml b/OpenKeychain/src/main/res/values-ru/strings.xml index 6b657c690..18839b039 100644 --- a/OpenKeychain/src/main/res/values-ru/strings.xml +++ b/OpenKeychain/src/main/res/values-ru/strings.xml @@ -212,7 +212,6 @@ Связывать ключи с контактами основываясь на именах и адресах электронной почты. Это происходит полностью в автономном режиме на вашем устройстве. Новые ключи не будут связаны с контактами - Автообновление ключей Предупреждение Эти новые возможности ещё не закончены и/или пока только изучаются. Проще говоря, не стоит полагаться на их безопасность. Пожалуйста, не сообщайте о связанных с ними проблемах! Подтверждение Keybase.io diff --git a/OpenKeychain/src/main/res/values-sr/strings.xml b/OpenKeychain/src/main/res/values-sr/strings.xml index 061113704..0a1ad4509 100644 --- a/OpenKeychain/src/main/res/values-sr/strings.xml +++ b/OpenKeychain/src/main/res/values-sr/strings.xml @@ -188,8 +188,7 @@ Повезивање кључева са контактима на основу имена и е-адреса. Одвија се у потпуности ван везе на вашем уређају. Нови кључеви неће бити повезани са контактима - Аутоматско ажурирање кључева - Упозорење + Упозорење Ове функције још нису завршене или су резултат истраживања корисничког искуства и безбедности. Стога се не ослањајте на њихову безбедност и молимо вас да не пријављујете грешке на које наиђете! Тражење доказа кључева на keybase.io и њихов приказ приликом приказивања кључа (Иконе и многи екрани још нису прилагођени за тамну тему) diff --git a/OpenKeychain/src/main/res/values-sv/strings.xml b/OpenKeychain/src/main/res/values-sv/strings.xml index 0908b17b5..11239a983 100644 --- a/OpenKeychain/src/main/res/values-sv/strings.xml +++ b/OpenKeychain/src/main/res/values-sv/strings.xml @@ -212,7 +212,6 @@ Länka nycklar till kontakter baserade på namn och e-postadresser. Detta sker helt offline på enheten. Nya nycklar kommer inte att kopplas till kontakter - Automatiska nyckeluppdateringar Varning Dessa funktioner är ännu inte färdiga eller resultat av användarupplevelse/säkerhetsforskning. Lita därför inte på deras säkerhet och var snäll och rapportera inte problem du stöter på! Keybase.io proofs diff --git a/OpenKeychain/src/main/res/values-uk/strings.xml b/OpenKeychain/src/main/res/values-uk/strings.xml index 6bbb8702f..1eb39243e 100644 --- a/OpenKeychain/src/main/res/values-uk/strings.xml +++ b/OpenKeychain/src/main/res/values-uk/strings.xml @@ -212,8 +212,7 @@ Прив\'язувати ключі до контактів на основі імен та адрес електронної пошти. Це відбувається повністю локально на Вашому пристрої. Нові ключі не будуть прив\'язані до контактів - Автоматичне оновлення ключів - Попередження + Попередження Ці можливості ще в розробці. Будь ласка, не сподівайтесь на їх безпеку та не повідомляйте про проблеми їхнього використання! Перевірки Keybase.io Контактувати з keybase.io для підтвердження ключа та показувати дійсності щоразу, коли ключ відображено diff --git a/OpenKeychain/src/main/res/values-vi/strings.xml b/OpenKeychain/src/main/res/values-vi/strings.xml index 52a57cfd8..4e7a0cfbb 100644 --- a/OpenKeychain/src/main/res/values-vi/strings.xml +++ b/OpenKeychain/src/main/res/values-vi/strings.xml @@ -189,8 +189,7 @@ Liên kết khóa với danh bạ dựa trên tên và địa chỉ thư. Nó được thực hiện hoàn toàn ngoại tuyến trên thiết bị của bạn. Các khóa mới sẽ không được liên kết với danh bạ - Cập nhật khóa tự động - Cảnh báo + Cảnh báo Tính năng này hiện chưa được hoàn thành hoặc chỉ mới là kết quả nghiên cứu/thử nghiệm. Do vậy, bạn đừng tin cậy vào tính an toàn của chúng cũng như không cần thiết phải thông báo với chúng tôi! Liên hệ với keybase.io để minh chứng khóa và hiển thị chúng mỗi khi khóa được gọi (Các biểu tượng và nhiều màn hình không được thêm vào giao diện dạng tối) diff --git a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml index 2d0af733e..58abf1121 100644 --- a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml +++ b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml @@ -213,8 +213,7 @@ 連接金鑰至聯絡人(基於姓名和電子郵件地址)。這只在您的裝置上離線進行。 新的金鑰將不會與聯絡人連接 - 自動金鑰同步 - 警告 + 警告 Keybase.io 證明 啟用洋蔥(Tor)網路 diff --git a/OpenKeychain/src/main/res/values-zh/strings.xml b/OpenKeychain/src/main/res/values-zh/strings.xml index 40cb2da8f..67c08e4a5 100644 --- a/OpenKeychain/src/main/res/values-zh/strings.xml +++ b/OpenKeychain/src/main/res/values-zh/strings.xml @@ -212,7 +212,6 @@ 根据名字和邮件地址将密钥关联到联系人。这是本地操作,不需要设备联网。 新密钥将不会与联系人相关联 - 自动更新密钥 警告 这些功能目前尚未完成或者缺少用户经验性/安全性的研究结果。所以,不保证他们是安全的,请不要报告遇到的问题! Keybase.io 证明 diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index ce2457c16..6943f9f9a 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -220,11 +220,6 @@ "Every three days, keys are updated from the preferred keyserver" "Keys are not automatically updated" "Sync only on Wi-Fi" - "Link keys to contacts" - "Link keys to contacts based on names and email addresses. This happens completely offline on your device." - "New keys will not be linked to contacts" - - "Automatic key updates" "Warning" "These features are not yet finished or results of user experience/security research. Thus, don't rely on their security and please don't report issues you encounter!" diff --git a/OpenKeychain/src/main/res/xml/account_desc.xml b/OpenKeychain/src/main/res/xml/account_desc.xml deleted file mode 100644 index 942909dbe..000000000 --- a/OpenKeychain/src/main/res/xml/account_desc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/OpenKeychain/src/main/res/xml/sync_adapter_contacts.xml b/OpenKeychain/src/main/res/xml/sync_adapter_contacts.xml deleted file mode 100644 index a134fdebe..000000000 --- a/OpenKeychain/src/main/res/xml/sync_adapter_contacts.xml +++ /dev/null @@ -1,8 +0,0 @@ - - \ No newline at end of file diff --git a/OpenKeychain/src/main/res/xml/sync_adapter_contacts_structure.xml b/OpenKeychain/src/main/res/xml/sync_adapter_contacts_structure.xml deleted file mode 100644 index 39dd8bc91..000000000 --- a/OpenKeychain/src/main/res/xml/sync_adapter_contacts_structure.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/OpenKeychain/src/main/res/xml/sync_preferences.xml b/OpenKeychain/src/main/res/xml/sync_preferences.xml index 6e57376e1..6301affbc 100644 --- a/OpenKeychain/src/main/res/xml/sync_preferences.xml +++ b/OpenKeychain/src/main/res/xml/sync_preferences.xml @@ -3,15 +3,14 @@ android:key="syncKeyserver" android:defaultValue="true" android:persistent="true" - android:title="@string/label_sync_settings_keyserver_title"/> + android:title="@string/label_sync_settings_keyserver_title" + android:summaryOn="@string/label_sync_settings_keyserver_summary_on" + android:summaryOff="@string/label_sync_settings_keyserver_summary_off" + /> -