diff --git a/OpenKeychain/build.gradle b/OpenKeychain/build.gradle index 3ea7e058d..9a42b4cc4 100644 --- a/OpenKeychain/build.gradle +++ b/OpenKeychain/build.gradle @@ -49,9 +49,6 @@ dependencies { // Nordpol implementation 'com.fidesmo:nordpol-android:0.1.22' - // piwik - implementation 'org.piwik.sdk:piwik-sdk:3.0.3' - // libs as submodules implementation project(':openpgp-api-lib') implementation project(':nfcsweetspot') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java index c1e83c150..57d2e160f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java @@ -20,8 +20,6 @@ package org.sufficientlysecure.keychain; import java.io.File; import java.net.Proxy; -import java.util.Arrays; -import java.util.List; import android.os.Environment; @@ -159,10 +157,6 @@ public final class Constants { public static final String KEY_SIGNATURES_TABLE_INITIALIZED = "key_signatures_table_initialized"; - public static final String KEY_ANALYTICS_ASKED_POLITELY = "analytics_asked"; - public static final String KEY_ANALYTICS_CONSENT = "analytics_consent"; - public static final String KEY_ANALYTICS_LAST_ASKED = "analytics_last_asked"; - public static final class Theme { public static final String LIGHT = "light"; public static final String DARK = "dark"; @@ -173,14 +167,6 @@ public final class Constants { public static final String TYPE_HTTP = "proxyHttp"; public static final String TYPE_SOCKS = "proxySocks"; } - - // we generally only track booleans. never snoop around in the user's string settings!! - public static final List ANALYTICS_PREFS = Arrays.asList(USE_NORMAL_PROXY, USE_TOR_PROXY, - SYNC_CONTACTS, SYNC_KEYSERVER, ENABLE_WIFI_SYNC_ONLY, - EXPERIMENTAL_USB_ALLOW_UNTESTED, - PASSPHRASE_CACHE_SUBS, SEARCH_KEYSERVER, SEARCH_WEB_KEY_DIRECTORY, - TEXT_USE_COMPRESSION, TEXT_SELF_ENCRYPT, FILE_USE_COMPRESSION, FILE_SELF_ENCRYPT, USE_ARMOR, - USE_NUMKEYPAD_FOR_SECURITY_TOKEN_PIN, ENCRYPT_FILENAMES); } /** diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java index 845d0c055..e7bd7d823 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java @@ -34,7 +34,6 @@ import android.widget.Toast; import androidx.annotation.Nullable; import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.sufficientlysecure.keychain.analytics.AnalyticsManager; import org.sufficientlysecure.keychain.keysync.KeyserverSyncManager; import org.sufficientlysecure.keychain.network.TlsCertificatePinning; import org.sufficientlysecure.keychain.provider.TemporaryFileProvider; @@ -46,8 +45,6 @@ import timber.log.Timber.DebugTree; public class KeychainApplication extends Application { - AnalyticsManager analyticsManager; - /** * Called when the application is starting, before any activity, service, or receiver objects * (excluding content providers) have been created. @@ -116,9 +113,6 @@ public class KeychainApplication extends Application { KeyserverSyncManager.updateKeyserverSyncScheduleAsync(this, false); TemporaryFileProvider.scheduleCleanupImmediately(getApplicationContext()); - - analyticsManager = AnalyticsManager.getInstance(getApplicationContext()); - analyticsManager.initialize(this); } /** @@ -167,10 +161,6 @@ public class KeychainApplication extends Application { } } - public AnalyticsManager getAnalyticsManager() { - return analyticsManager; - } - public static String getProcessName() { if (Build.VERSION.SDK_INT >= 28) return Application.getProcessName(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/analytics/AnalyticsConsentRequester.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/analytics/AnalyticsConsentRequester.java deleted file mode 100644 index 15fe9a304..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/analytics/AnalyticsConsentRequester.java +++ /dev/null @@ -1,95 +0,0 @@ -package org.sufficientlysecure.keychain.analytics; - - -import java.util.concurrent.TimeUnit; - -import android.app.Activity; -import android.app.AlertDialog; -import android.app.AlertDialog.Builder; -import android.content.Intent; -import android.content.pm.PackageManager.NameNotFoundException; -import android.preference.PreferenceActivity; -import android.text.method.LinkMovementMethod; -import android.widget.TextView; - -import org.sufficientlysecure.keychain.BuildConfig; -import org.sufficientlysecure.keychain.KeychainApplication; -import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.ui.SettingsActivity; -import org.sufficientlysecure.keychain.ui.SettingsActivity.ExperimentalPrefsFragment; -import org.sufficientlysecure.keychain.ui.util.Notify; -import org.sufficientlysecure.keychain.ui.util.Notify.Style; -import org.sufficientlysecure.keychain.util.Preferences; - - -public class AnalyticsConsentRequester { - private final Activity activity; - - public static AnalyticsConsentRequester getInstance(Activity activity) { - return new AnalyticsConsentRequester(activity); - } - - private AnalyticsConsentRequester(Activity activity) { - this.activity = activity; - } - - public void maybeAskForAnalytics() { - Preferences preferences = Preferences.getPreferences(activity); - if (preferences.isAnalyticsHasConsent()) { - return; - } - - boolean askedBeforeAndWasRejected = - preferences.isAnalyticsAskedPolitely() && !preferences.isAnalyticsHasConsent(); - if (askedBeforeAndWasRejected) { - return; - } - - try { - long firstInstallTime = - activity.getPackageManager().getPackageInfo(BuildConfig.APPLICATION_ID, 0).firstInstallTime; - long threeDaysAgo = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(3); - boolean installedLessThanThreeDaysAgo = firstInstallTime > threeDaysAgo; - if (installedLessThanThreeDaysAgo) { - return; - } - } catch (NameNotFoundException e) { - return; - } - - long twentyFourHoursAgo = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1); - boolean askedLessThan24HoursAgo = preferences.getAnalyticsLastAsked() > twentyFourHoursAgo; - if (askedLessThan24HoursAgo) { - return; - } - - preferences.setAnalyticsLastAskedNow(); - - AnalyticsManager analyticsManager = ((KeychainApplication) activity.getApplication()).getAnalyticsManager(); - AlertDialog alertDialog = new Builder(activity) - .setMessage(R.string.dialog_analytics_consent) - .setPositiveButton(R.string.button_analytics_yes, (dialog, which) -> { - preferences.setAnalyticsAskedPolitely(); - preferences.setAnalyticsGotUserConsent(true); - analyticsManager.refreshSettings(activity); - Notify.create(activity, R.string.snack_analytics_accept, Style.OK, - this::startExperimentalSettingsActivity, R.string.snackbutton_analytics_settings).show(); - }) - .setNegativeButton(R.string.button_analytics_no, (dialog, which) -> { - preferences.setAnalyticsAskedPolitely(); - preferences.setAnalyticsGotUserConsent(false); - analyticsManager.refreshSettings(activity); - Notify.create(activity, R.string.snack_analytics_reject, Style.OK, - this::startExperimentalSettingsActivity, R.string.snackbutton_analytics_settings).show(); - }) - .show(); - alertDialog.findViewById(android.R.id.message).setMovementMethod(LinkMovementMethod.getInstance()); - } - - private void startExperimentalSettingsActivity() { - Intent resultIntent = new Intent(activity, SettingsActivity.class); - String experimentalPrefsName = ExperimentalPrefsFragment.class.getName(); - resultIntent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT, experimentalPrefsName); - activity.startActivity(resultIntent); - } -} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/analytics/AnalyticsManager.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/analytics/AnalyticsManager.java deleted file mode 100644 index 0d51a6a99..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/analytics/AnalyticsManager.java +++ /dev/null @@ -1,180 +0,0 @@ -package org.sufficientlysecure.keychain.analytics; - - -import android.app.Activity; -import android.app.Application; -import android.app.Application.ActivityLifecycleCallbacks; -import android.content.Context; -import android.content.SharedPreferences; -import android.content.SharedPreferences.OnSharedPreferenceChangeListener; -import android.os.Bundle; - -import org.piwik.sdk.Piwik; -import org.piwik.sdk.Tracker; -import org.piwik.sdk.TrackerConfig; -import org.piwik.sdk.extra.DownloadTracker.Extra.ApkChecksum; -import org.piwik.sdk.extra.TrackHelper; -import org.sufficientlysecure.keychain.Constants; -import org.sufficientlysecure.keychain.Constants.Defaults; -import org.sufficientlysecure.keychain.Constants.Pref; -import org.sufficientlysecure.keychain.util.Preferences; -import timber.log.Timber; - - -public class AnalyticsManager implements OnSharedPreferenceChangeListener { - private Tracker piwikTracker; - - public static AnalyticsManager getInstance(Context context) { - return new AnalyticsManager(context); - } - - private AnalyticsManager(Context context) { - refreshSettings(context); - } - - public void initialize(Application application) { - if (piwikTracker != null) { - TrackHelper.track().download().identifier(new ApkChecksum(application)).with(piwikTracker); - } - - application.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { - @Override - public void onActivityCreated(Activity activity, Bundle savedInstanceState) { - } - - @Override - public void onActivityStarted(Activity activity) { - - } - - @Override - public void onActivityResumed(Activity activity) { - if (piwikTracker == null) { - return; - } - TrackHelper.track().screen(activity.getClass().getSimpleName()).with(piwikTracker); - } - - @Override - public void onActivityPaused(Activity activity) { - - } - - @Override - public void onActivityStopped(Activity activity) { - - } - - @Override - public void onActivitySaveInstanceState(Activity activity, Bundle outState) { - - } - - @Override - public void onActivityDestroyed(Activity activity) { - - } - }); - - Preferences preferences = Preferences.getPreferences(application); - preferences.getSharedPreferences().registerOnSharedPreferenceChangeListener(this); - } - - // we generally only track booleans. never snoop around in the user's string settings!! - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - if (piwikTracker == null) { - return; - } - - // small exception: check if the user uses a custom keyserver, or one of the well-known ones - if (Pref.KEY_SERVERS.equals(key)) { - Timber.d("Tracking pref %s", key); - String keyServers = sharedPreferences.getString(Pref.KEY_SERVERS, Defaults.KEY_SERVERS); - String current = keyServers.substring(keyServers.indexOf(',')); - - String coarseGranularityKeyserver; - if (current.contains("keyserver.ubuntu.com")) { - coarseGranularityKeyserver = "ubuntu"; - } else if (current.contains("pgp.mit.edu")) { - coarseGranularityKeyserver = "mit"; - } else if (current.contains("pool.sks-keyservers.net")) { - coarseGranularityKeyserver = "pool"; - } else { - coarseGranularityKeyserver = "custom"; - } - TrackHelper.track().interaction("pref_" + Pref.KEY_SERVERS, coarseGranularityKeyserver).with(piwikTracker); - return; - } - // unpack an enum - if (Pref.THEME.equals(key)) { - String value = sharedPreferences.getString(Pref.THEME, "empty"); - TrackHelper.track().interaction("pref_" + Pref.THEME, value).with(piwikTracker); - return; - } - // all other values we track are individual booleans - if (Pref.ANALYTICS_PREFS.contains(key)) { - Timber.d("Tracking pref %s", key); - if (!sharedPreferences.contains(key)) { - TrackHelper.track().interaction("pref_" + key, "empty").with(piwikTracker); - return; - } - boolean value = sharedPreferences.getBoolean(key, false); - TrackHelper.track().interaction("pref_" + key, value ? "true" : "false").with(piwikTracker); - } - } - - public void trackFragmentImpression(String opClassName, String fragmentName) { - if (piwikTracker == null) { - return; - } - - TrackHelper.track().screen(opClassName + "/" + fragmentName).with(piwikTracker); - } - - public void trackInternalServiceCall(String opClassName) { - if (piwikTracker == null) { - return; - } - TrackHelper.track() - .interaction("internalApiCall", opClassName) - .with(piwikTracker); - } - - public void trackApiServiceCall(String opClassName, String currentCallingPackage) { - if (piwikTracker == null) { - return; - } - - TrackHelper.track() - .interaction("externalApiCall", opClassName) - .piece(currentCallingPackage.replace(".", "/")) - .with(piwikTracker); - } - - public synchronized void refreshSettings(Context context) { - boolean shouldEnableAnalytics = shouldEnableAnalytics(context); - boolean analyticsEnabled = piwikTracker != null; - if (shouldEnableAnalytics != analyticsEnabled) { - if (shouldEnableAnalytics) { - TrackerConfig trackerConfig; - if (Constants.DEBUG) { - trackerConfig = new TrackerConfig("https://piwik.openkeychain.org/", 3, "OpenKeychainDebug"); - } else { - trackerConfig = new TrackerConfig("https://piwik.openkeychain.org/", 2, "OpenKeychain"); - } - piwikTracker = Piwik.getInstance(context).newTracker(trackerConfig); - piwikTracker.setDispatchInterval(60000); - piwikTracker.setOptOut(false); - } else { - piwikTracker.setOptOut(true); - piwikTracker = null; - } - } - } - - private boolean shouldEnableAnalytics(Context context) { - Preferences preferences = Preferences.getPreferences(context); - return preferences.isAnalyticsHasConsent() && !preferences.getUseTorProxy(); - } -} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java index 7e4514fa4..daf5d4fd1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java @@ -38,10 +38,10 @@ import android.os.Messenger; import android.os.ParcelFileDescriptor; import android.os.RemoteException; import android.os.SystemClock; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import android.text.TextUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import org.bouncycastle.bcpg.ArmoredOutputStream; import org.openintents.openpgp.AutocryptPeerUpdate; import org.openintents.openpgp.IOpenPgpService; @@ -52,9 +52,12 @@ import org.openintents.openpgp.OpenPgpSignatureResult; import org.openintents.openpgp.OpenPgpSignatureResult.AutocryptPeerResult; import org.openintents.openpgp.util.OpenPgpApi; import org.sufficientlysecure.keychain.Constants; +import org.sufficientlysecure.keychain.daos.ApiAppDao; +import org.sufficientlysecure.keychain.daos.AutocryptPeerDao; +import org.sufficientlysecure.keychain.daos.KeyRepository; +import org.sufficientlysecure.keychain.daos.KeyRepository.NotFoundException; +import org.sufficientlysecure.keychain.daos.OverriddenWarningsDao; import org.sufficientlysecure.keychain.model.SubKey.UnifiedKeyInfo; -import org.sufficientlysecure.keychain.KeychainApplication; -import org.sufficientlysecure.keychain.analytics.AnalyticsManager; import org.sufficientlysecure.keychain.operations.BackupOperation; import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult; import org.sufficientlysecure.keychain.operations.results.ExportResult; @@ -69,12 +72,7 @@ import org.sufficientlysecure.keychain.pgp.PgpSignEncryptData; import org.sufficientlysecure.keychain.pgp.PgpSignEncryptOperation; import org.sufficientlysecure.keychain.pgp.Progressable; import org.sufficientlysecure.keychain.pgp.SecurityProblem; -import org.sufficientlysecure.keychain.daos.ApiAppDao; -import org.sufficientlysecure.keychain.daos.AutocryptPeerDao; -import org.sufficientlysecure.keychain.daos.KeyRepository; -import org.sufficientlysecure.keychain.daos.KeyRepository.NotFoundException; import org.sufficientlysecure.keychain.provider.KeychainExternalContract.AutocryptStatus; -import org.sufficientlysecure.keychain.daos.OverriddenWarningsDao; import org.sufficientlysecure.keychain.remote.OpenPgpServiceKeyIdExtractor.KeyIdResult; import org.sufficientlysecure.keychain.remote.OpenPgpServiceKeyIdExtractor.KeyIdResultStatus; import org.sufficientlysecure.keychain.service.BackupKeyringParcel; @@ -101,7 +99,6 @@ public class OpenPgpService extends Service { private ApiAppDao mApiAppDao; private OpenPgpServiceKeyIdExtractor mKeyIdExtractor; private ApiPendingIntentFactory mApiPendingIntentFactory; - private AnalyticsManager analyticsManager; @Override public void onCreate() { @@ -111,8 +108,6 @@ public class OpenPgpService extends Service { mApiPermissionHelper = new ApiPermissionHelper(this, mApiAppDao); mApiPendingIntentFactory = new ApiPendingIntentFactory(getBaseContext()); mKeyIdExtractor = OpenPgpServiceKeyIdExtractor.getInstance(getContentResolver(), mApiPendingIntentFactory); - - analyticsManager = ((KeychainApplication) getApplication()).getAnalyticsManager(); } private Intent signImpl(Intent data, InputStream inputStream, @@ -1032,8 +1027,6 @@ public class OpenPgpService extends Service { return errorResult; } - analyticsManager.trackApiServiceCall(data.getAction(), mApiPermissionHelper.getCurrentCallingPackage()); - Progressable progressable = null; if (data.hasExtra(OpenPgpApi.EXTRA_PROGRESS_MESSENGER)) { Messenger messenger = data.getParcelableExtra(OpenPgpApi.EXTRA_PROGRESS_MESSENGER); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/SshAuthenticationService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/SshAuthenticationService.java index a82f0e5f7..670bda19e 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/SshAuthenticationService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/SshAuthenticationService.java @@ -40,17 +40,15 @@ import org.openintents.ssh.authentication.response.PublicKeyResponse; import org.openintents.ssh.authentication.response.SigningResponse; import org.openintents.ssh.authentication.response.SshPublicKeyResponse; import org.sufficientlysecure.keychain.Constants; -import org.sufficientlysecure.keychain.KeychainApplication; -import org.sufficientlysecure.keychain.analytics.AnalyticsManager; +import org.sufficientlysecure.keychain.daos.ApiAppDao; +import org.sufficientlysecure.keychain.daos.KeyRepository; +import org.sufficientlysecure.keychain.daos.KeyRepository.NotFoundException; import org.sufficientlysecure.keychain.model.SubKey.UnifiedKeyInfo; import org.sufficientlysecure.keychain.operations.results.OperationResult.LogEntryParcel; import org.sufficientlysecure.keychain.pgp.CanonicalizedPublicKey; import org.sufficientlysecure.keychain.pgp.SshPublicKey; import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException; import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException; -import org.sufficientlysecure.keychain.daos.ApiAppDao; -import org.sufficientlysecure.keychain.daos.KeyRepository; -import org.sufficientlysecure.keychain.daos.KeyRepository.NotFoundException; import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; import org.sufficientlysecure.keychain.service.input.RequiredInputParcel; import org.sufficientlysecure.keychain.ssh.AuthenticationData; @@ -67,8 +65,6 @@ public class SshAuthenticationService extends Service { private ApiAppDao mApiAppDao; private ApiPendingIntentFactory mApiPendingIntentFactory; - private AnalyticsManager analyticsManager; - private static final List SUPPORTED_VERSIONS = Collections.unmodifiableList(Collections.singletonList(1)); private static final int INVALID_API_VERSION = -1; @@ -82,8 +78,6 @@ public class SshAuthenticationService extends Service { mApiAppDao = ApiAppDao.getInstance(this); mApiPendingIntentFactory = new ApiPendingIntentFactory(getBaseContext()); - - analyticsManager = ((KeychainApplication) getApplication()).getAnalyticsManager(); } private final ISshAuthenticationService.Stub mSSHAgent = new ISshAuthenticationService.Stub() { @@ -109,8 +103,6 @@ public class SshAuthenticationService extends Service { } private Intent executeInternal(Intent intent) { - analyticsManager.trackApiServiceCall(intent.getAction(), mApiPermissionHelper.getCurrentCallingPackage()); - switch (intent.getAction()) { case SshAuthenticationApi.ACTION_SIGN: return authenticate(intent); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainServiceTask.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainServiceTask.java index 9dc0a9c37..af82d87f9 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainServiceTask.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainServiceTask.java @@ -25,10 +25,8 @@ import android.app.Activity; import android.content.Context; import android.os.AsyncTask; import android.os.Parcelable; -import androidx.core.os.CancellationSignal; -import org.sufficientlysecure.keychain.KeychainApplication; -import org.sufficientlysecure.keychain.analytics.AnalyticsManager; +import androidx.core.os.CancellationSignal; import org.sufficientlysecure.keychain.daos.KeyWritableRepository; import org.sufficientlysecure.keychain.operations.BackupOperation; import org.sufficientlysecure.keychain.operations.BaseOperation; @@ -54,20 +52,15 @@ import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; public class KeychainServiceTask { - private final AnalyticsManager analyticsManager; - public static KeychainServiceTask create(Activity activity) { Context context = activity.getApplicationContext(); KeyWritableRepository keyRepository = KeyWritableRepository.create(context); - AnalyticsManager analyticsManager = ((KeychainApplication) activity.getApplication()).getAnalyticsManager(); - - return new KeychainServiceTask(context, keyRepository, analyticsManager); + return new KeychainServiceTask(context, keyRepository); } - private KeychainServiceTask(Context context, KeyWritableRepository keyRepository, AnalyticsManager analyticsManager) { + private KeychainServiceTask(Context context, KeyWritableRepository keyRepository) { this.context = context; this.keyRepository = keyRepository; - this.analyticsManager = analyticsManager; } private final Context context; @@ -128,8 +121,6 @@ public class KeychainServiceTask { return null; } - analyticsManager.trackInternalServiceCall(op.getClass().getSimpleName()); - // noinspection unchecked, we make sure it's the correct op above return op.execute(inputParcel, cryptoInput); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java index 4c1c30336..4b26c337d 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java @@ -54,7 +54,6 @@ import eu.davidea.flexibleadapter.SelectableAdapter.Mode; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.KeychainDatabase; import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.analytics.AnalyticsConsentRequester; import org.sufficientlysecure.keychain.compatibility.ClipboardReflection; import org.sufficientlysecure.keychain.daos.DatabaseNotifyManager; import org.sufficientlysecure.keychain.daos.KeyRepository; @@ -254,8 +253,6 @@ public class KeyListFragment extends RecyclerFragment> liveData = viewModel.getGenericLiveData(requireContext(), this::loadFlexibleKeyItems); liveData.observe(this, this::onLoadKeyItems); - - AnalyticsConsentRequester.getInstance(activity).maybeAskForAnalytics(); } @WorkerThread diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java index faec8217f..0ce5fe274 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java @@ -17,18 +17,19 @@ package org.sufficientlysecure.keychain.ui; + import android.content.Intent; import android.graphics.Typeface; import android.net.Uri; import android.os.Build; import android.os.Build.VERSION_CODES; import android.os.Bundle; +import android.view.View; + +import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; -import androidx.appcompat.widget.Toolbar; -import android.view.View; - import com.mikepenz.community_material_typeface_library.CommunityMaterial; import com.mikepenz.fontawesome_typeface_library.FontAwesome; import com.mikepenz.google_material_typeface_library.GoogleMaterial; @@ -37,10 +38,7 @@ import com.mikepenz.materialdrawer.DrawerBuilder; import com.mikepenz.materialdrawer.model.DividerDrawerItem; import com.mikepenz.materialdrawer.model.PrimaryDrawerItem; import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem; - -import org.sufficientlysecure.keychain.KeychainApplication; import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.analytics.AnalyticsManager; import org.sufficientlysecure.keychain.operations.results.OperationResult; import org.sufficientlysecure.keychain.remote.ui.AppsListFragment; import org.sufficientlysecure.keychain.ui.base.BaseSecurityTokenActivity; @@ -67,7 +65,6 @@ public class MainActivity extends BaseSecurityTokenActivity implements FabContai public Drawer mDrawer; private Toolbar mToolbar; - private AnalyticsManager analyticsManager; @Override public void onCreate(Bundle savedInstanceState) { @@ -78,8 +75,6 @@ public class MainActivity extends BaseSecurityTokenActivity implements FabContai mToolbar.setTitle(R.string.app_name); setSupportActionBar(mToolbar); - analyticsManager = ((KeychainApplication) getApplication()).getAnalyticsManager(); - mDrawer = new DrawerBuilder() .withActivity(this) .withHeader(R.layout.main_drawer_header) @@ -219,8 +214,6 @@ public class MainActivity extends BaseSecurityTokenActivity implements FabContai private void setFragment(Fragment frag) { FragmentManager fragmentManager = getSupportFragmentManager(); - analyticsManager.trackFragmentImpression(getClass().getSimpleName(), frag.getClass().getSimpleName()); - FragmentTransaction ft = fragmentManager.beginTransaction(); ft.replace(R.id.main_fragment_container, frag); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 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 2e8a14fae..f5ab1ea69 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java @@ -41,14 +41,14 @@ import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.preference.SwitchPreference; import android.provider.ContactsContract; -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.appcompat.widget.Toolbar; 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; @@ -579,14 +579,6 @@ public class SettingsActivity extends AppCompatPreferenceActivity { }); } - @Override - public void onPause() { - super.onPause(); - - Activity activity = getActivity(); - ((KeychainApplication) activity.getApplication()).getAnalyticsManager().refreshSettings(activity); - } - @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java index 65295caf7..821ca8e3f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java @@ -22,17 +22,9 @@ import java.util.List; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; -import androidx.lifecycle.LiveData; -import androidx.lifecycle.Transformations; -import androidx.lifecycle.ViewModel; -import androidx.lifecycle.ViewModelProviders; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import androidx.annotation.StringRes; -import androidx.fragment.app.Fragment; -import androidx.viewpager.widget.ViewPager; -import androidx.viewpager.widget.ViewPager.OnPageChangeListener; import android.view.ActionMode; import android.view.LayoutInflater; import android.view.Menu; @@ -41,16 +33,22 @@ import android.view.View; import android.view.ViewPropertyAnimator; import android.view.animation.OvershootInterpolator; +import androidx.annotation.StringRes; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.Transformations; +import androidx.lifecycle.ViewModel; +import androidx.lifecycle.ViewModelProviders; +import androidx.viewpager.widget.ViewPager; +import androidx.viewpager.widget.ViewPager.OnPageChangeListener; import com.astuetz.PagerSlidingTabStrip; -import org.sufficientlysecure.keychain.KeychainApplication; import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.daos.KeyRepository; import org.sufficientlysecure.keychain.livedata.GenericLiveData; import org.sufficientlysecure.keychain.model.SubKey; import org.sufficientlysecure.keychain.model.SubKey.UnifiedKeyInfo; import org.sufficientlysecure.keychain.model.UserPacket.UserId; -import org.sufficientlysecure.keychain.analytics.AnalyticsManager; import org.sufficientlysecure.keychain.operations.results.OperationResult; -import org.sufficientlysecure.keychain.daos.KeyRepository; import org.sufficientlysecure.keychain.ui.adapter.PagerTabStripAdapter; import org.sufficientlysecure.keychain.ui.base.BaseActivity; import org.sufficientlysecure.keychain.ui.keyview.ViewKeyActivity; @@ -89,8 +87,6 @@ public class ViewKeyAdvActivity extends BaseActivity implements OnPageChangeList } } - private AnalyticsManager analyticsManager; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -98,7 +94,6 @@ public class ViewKeyAdvActivity extends BaseActivity implements OnPageChangeList setFullScreenDialogClose(v -> finish()); keyRepository = KeyRepository.create(this); - analyticsManager = ((KeychainApplication) getApplication()).getAnalyticsManager(); viewPager = findViewById(R.id.pager); slidingTabLayout = findViewById(R.id.sliding_tab_layout); @@ -300,9 +295,6 @@ public class ViewKeyAdvActivity extends BaseActivity implements OnPageChangeList actionMode = null; } invalidateOptionsMenu(); - - String fragmentName = tabAdapter.getItem(position).getClass().getSimpleName(); - analyticsManager.trackFragmentImpression(getClass().getSimpleName(), fragmentName); } @Override diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java index de0c15306..1f5451f97 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java @@ -359,30 +359,6 @@ public class Preferences { mSharedPreferences.edit().putString(Pref.SYNC_WORK_UUID, value).apply(); } - public boolean isAnalyticsAskedPolitely() { - return mSharedPreferences.getBoolean(Pref.KEY_ANALYTICS_ASKED_POLITELY, false); - } - - public void setAnalyticsAskedPolitely() { - mSharedPreferences.edit().putBoolean(Pref.KEY_ANALYTICS_ASKED_POLITELY, true).apply(); - } - - public boolean isAnalyticsHasConsent() { - return mSharedPreferences.getBoolean(Pref.KEY_ANALYTICS_CONSENT, false); - } - - public void setAnalyticsGotUserConsent(boolean hasUserConsent) { - mSharedPreferences.edit().putBoolean(Pref.KEY_ANALYTICS_CONSENT, hasUserConsent).apply(); - } - - public void setAnalyticsLastAskedNow() { - mSharedPreferences.edit().putLong(Pref.KEY_ANALYTICS_LAST_ASKED, System.currentTimeMillis()).apply(); - } - - public long getAnalyticsLastAsked() { - return mSharedPreferences.getLong(Pref.KEY_ANALYTICS_LAST_ASKED, 0); - } - @AutoValue public static abstract class CloudSearchPrefs implements Parcelable { public abstract boolean isKeyserverEnabled(); diff --git a/OpenKeychain/src/main/res/values-ar/strings.xml b/OpenKeychain/src/main/res/values-ar/strings.xml index 346eb87c8..7db0b8351 100644 --- a/OpenKeychain/src/main/res/values-ar/strings.xml +++ b/OpenKeychain/src/main/res/values-ar/strings.xml @@ -686,7 +686,5 @@ مفتاح %d / %d مجهول # - لا، شكراً - الإعدادات شارك المفتاح diff --git a/OpenKeychain/src/main/res/values-br/strings.xml b/OpenKeychain/src/main/res/values-br/strings.xml index 0a70d6aa1..b48c8ee0a 100644 --- a/OpenKeychain/src/main/res/values-br/strings.xml +++ b/OpenKeychain/src/main/res/values-br/strings.xml @@ -167,6 +167,4 @@ Kas Emporzhiañ Anonymous - Nann, avat - Arventennoù diff --git a/OpenKeychain/src/main/res/values-ca/strings.xml b/OpenKeychain/src/main/res/values-ca/strings.xml index dbee9d4a5..bf88c38b0 100644 --- a/OpenKeychain/src/main/res/values-ca/strings.xml +++ b/OpenKeychain/src/main/res/values-ca/strings.xml @@ -213,8 +213,6 @@ Proves de Keybase.io Contacta amb keybase.io per proves de clau i mostra-les cada vegada que es mostri una clau (Les icones i moltes pantalles no estan encara ben ajustades per aquest tema fosc) - Permet estadístiques d\'ús anònim - Si està habilitat, envia estadístiques d\'ús anònim per ajudar en la millora de la app Activa Tor Requereix Orbot per a ser instal·lat @@ -822,6 +820,4 @@ Visualitza Actualitzant claus... Anònim - No, gràcies - Configuració diff --git a/OpenKeychain/src/main/res/values-cs/strings.xml b/OpenKeychain/src/main/res/values-cs/strings.xml index 27806d243..816d4ef61 100644 --- a/OpenKeychain/src/main/res/values-cs/strings.xml +++ b/OpenKeychain/src/main/res/values-cs/strings.xml @@ -218,8 +218,6 @@ Keybase.io Proofs Kontaktovat keybase.io pro proofs klíče a ukázat je pokaždé když je klíč zobrazen (Ikony a mnoho obrazovek ještě nejsou uzpůsobené pro temné téma vzhledu) - Povolit anonymní statistiku využití - Pokud povoleno, odešle anonymní statistiku o využívání za účelem vylepšení applikace Zapnout Tor Vyžaduje instalovaný Orbot @@ -1874,12 +1872,6 @@ Klíč ID: %s Anonymní # - K zlepšení zkušenosti všech uživatelů, smí OpenKeychain sbírat anonymní statistiku o používání?\n\nVíce informací v Ochraně údajů. - Ano, chci pomoci! - Ne, děkuji - Díky za pomoc! Tuto volbu můžete změnit v nastavení. - To je v pořádku, už se nezeptáme. Své rozhodnutí mužete změnit v nastavení. - Nastavení Založím podklíč Podklíč bude zrušen Podklíč bude vyjmut diff --git a/OpenKeychain/src/main/res/values-da/strings.xml b/OpenKeychain/src/main/res/values-da/strings.xml index f9bb3d7fb..3c06729d7 100644 --- a/OpenKeychain/src/main/res/values-da/strings.xml +++ b/OpenKeychain/src/main/res/values-da/strings.xml @@ -227,5 +227,4 @@ Tilbage Afslut Gennemse - Indstillinger diff --git a/OpenKeychain/src/main/res/values-de/strings.xml b/OpenKeychain/src/main/res/values-de/strings.xml index b8b7f9799..d9e9ca0cc 100644 --- a/OpenKeychain/src/main/res/values-de/strings.xml +++ b/OpenKeychain/src/main/res/values-de/strings.xml @@ -218,8 +218,6 @@ Keybase.io-Nachweise Keybase.io für Schlüsselnachweise kontaktieren und diese jedesmal zeigen, wenn ein Schlüssel angezeigt wird (Die Symbole und viele Bildschirme sind noch nicht an das dunkle Design angepasst) - Erlaube anonyme Benutzungsstatistiken - Wenn aktiviert, sendet anonyme Benutzungsstatistiken, um dabei zu helfen, die App zu verbessern Tor aktivieren Orbot muss installiert sein @@ -1807,12 +1805,6 @@ Ein sicherer Schlüssel sollte eine Stärke von 2048 Bits besitzen. Key ID: %s Anonym # - Um die Erfahrung aller Benutzer zu verbessen, soll OpenKeychain anonyme Benutzungsstatistiken sammeln dürfen?\n\nUm mehr zu erfahren, schau in unserePrivatsphärenrichtlinien. - Ja, ich möchte helfen! - Nein, danke - Vielen Dank für die Hilfe! Du kannst deine Entscheidung in den Einstellungen ändern. - Das ist in Ordnung, wir werden nicht erneut fragen. Du kannst deine Entscheidung in den Einstellungen ändern. - Einstellungen Teilschlüssel wird erstellt werden Teilschlüssel wird widerrufen werden Teilschlüssel wird entfernt werden diff --git a/OpenKeychain/src/main/res/values-el/strings.xml b/OpenKeychain/src/main/res/values-el/strings.xml index e9ad368b2..dbf747f7e 100644 --- a/OpenKeychain/src/main/res/values-el/strings.xml +++ b/OpenKeychain/src/main/res/values-el/strings.xml @@ -299,6 +299,4 @@ Δείτε τα αποτελέσματα Ανώνυμος # - Όχι, ευχαριστώ - Ρυθμίσεις diff --git a/OpenKeychain/src/main/res/values-eo/strings.xml b/OpenKeychain/src/main/res/values-eo/strings.xml index 1041b36e2..552910092 100644 --- a/OpenKeychain/src/main/res/values-eo/strings.xml +++ b/OpenKeychain/src/main/res/values-eo/strings.xml @@ -176,5 +176,4 @@ Reen Fini Rigardi - Agordoj diff --git a/OpenKeychain/src/main/res/values-es-rMX/strings.xml b/OpenKeychain/src/main/res/values-es-rMX/strings.xml index 0d9b6e4f6..b65004e8e 100644 --- a/OpenKeychain/src/main/res/values-es-rMX/strings.xml +++ b/OpenKeychain/src/main/res/values-es-rMX/strings.xml @@ -434,5 +434,4 @@ Desactivar Atrás Ve - Ajustes diff --git a/OpenKeychain/src/main/res/values-es/strings.xml b/OpenKeychain/src/main/res/values-es/strings.xml index 625afabe9..fc9d25e3f 100644 --- a/OpenKeychain/src/main/res/values-es/strings.xml +++ b/OpenKeychain/src/main/res/values-es/strings.xml @@ -218,8 +218,6 @@ Comprobantes de Keybase.io Contacta con keybase.io para obtener comprobantes de clave y muestrelos cada vez que se muestra una clave (Los iconos y algunas pantallas todavía no están ajustadas de acuerdo con el tema decorativo oscuro) - Permitir estadísticas de uso anónimas - Si está habilitado, envía estadísticas de uso anónimas para ayudar a mejorar la app Habilitar Tor Requiere que Orbot esté instalado @@ -1804,12 +1802,6 @@ Identificación de la clave: %s Anónimo # - Para mejorar la experiencia de todos los usuarios, ¿puede OpenKeychain recopilar estadísticas de uso anónimas? \n\n Para saber más, mira nuestra Política de Privacidad. - Si, quiero ayudar! - No, gracias! - Gracias por ayudar! Puede cambiar esta preferencia en la configuración. - Está bien, no volveremos a preguntar. Puedes cambiar de opinión en la configuración. - Configuración La subclave será creada La subclave será revocada La subclave será removida diff --git a/OpenKeychain/src/main/res/values-eu/strings.xml b/OpenKeychain/src/main/res/values-eu/strings.xml index d5b315b3a..0ce526c52 100644 --- a/OpenKeychain/src/main/res/values-eu/strings.xml +++ b/OpenKeychain/src/main/res/values-eu/strings.xml @@ -211,8 +211,7 @@ 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) - Ahalbidetu izengabeko estatistika erabilpena - + Gaitu Tor Orbot ezarrita egotea behar du Gaitu beste proxy bat @@ -1552,9 +1551,6 @@ Giltza ID-a: %s Izengabe # - Bai, laguntzea nahi dut! - Ez, mila esker - Ezarpenak Azpigiltza sortuko da Azpigiltza ukatuko da Epemuga inoiz ez-ra aldatuko da diff --git a/OpenKeychain/src/main/res/values-fa/strings.xml b/OpenKeychain/src/main/res/values-fa/strings.xml index 4b4bf09d2..93f96bf4d 100644 --- a/OpenKeychain/src/main/res/values-fa/strings.xml +++ b/OpenKeychain/src/main/res/values-fa/strings.xml @@ -430,6 +430,4 @@ مشاهده درحال آپدیت‌کردن کلیدها... ناشناس - نه، ممنون - تنظیمات diff --git a/OpenKeychain/src/main/res/values-fi/strings.xml b/OpenKeychain/src/main/res/values-fi/strings.xml index 13affc272..d3e54b7a3 100644 --- a/OpenKeychain/src/main/res/values-fi/strings.xml +++ b/OpenKeychain/src/main/res/values-fi/strings.xml @@ -381,5 +381,4 @@ Näkymä Päivitetään avaimia... Anonyymi - Asetukset diff --git a/OpenKeychain/src/main/res/values-fr/strings.xml b/OpenKeychain/src/main/res/values-fr/strings.xml index 483d98600..31c3311f2 100644 --- a/OpenKeychain/src/main/res/values-fr/strings.xml +++ b/OpenKeychain/src/main/res/values-fr/strings.xml @@ -218,8 +218,6 @@ Preuves keybase.io Contacter keybase.io pour obtenir des preuves de clé et les afficher chaque fois qu’une clé est affichée (Les icônes et de nombreux écrans ne sont pas encore adaptés au thème sombre) - Autoriser les statistiques anonymes d’utilisation - Si cette option est activée, des statistiques anonymes d\'utilisation sont envoyées pour aider à améliorer l’appli Activer Tor Orbot doit être installé @@ -1806,12 +1804,6 @@ ID de clé : %s Anonyme # - Pour améliorer l’expérience de tous les utilisateurs, OpenKeychain peut-elle recueillir des statistiques anonymes d’utilisation ?\n\nPour en apprendre davantage, consultez notre politique de confidentialité. - Oui, je souhaite aider - Non, merci - Nous vous remercions de votre aide. Vous pouvez changer cette préférence dans vos paramètres. - Très bien, nous ne vous le demanderons plus. Vous pouvez changer cette préférence dans les paramètres. - Paramètres Une sous-clé sera créée La sous-clé sera révoquée La sous-clé sera dépouillée diff --git a/OpenKeychain/src/main/res/values-gl/strings.xml b/OpenKeychain/src/main/res/values-gl/strings.xml index 4e5b17d97..35927297c 100644 --- a/OpenKeychain/src/main/res/values-gl/strings.xml +++ b/OpenKeychain/src/main/res/values-gl/strings.xml @@ -217,8 +217,6 @@ probas de Keybase.io Pedirlle probas de chave a keybase.io e expoñelas cada vez que se mostra a chave (As iconas e moitas pantallas non están aínda ben axustadas ao decorado oscuro) - Permitir estátisticas anónimas sobre o uso - Se está habilitado, envía estatísticas anónimas sobre o uso para axudar a mellorar a app. Habilitar Tor Precisa instalar Orbot @@ -1487,5 +1485,4 @@ ID da Chave: %s Anónimo # - Axustes diff --git a/OpenKeychain/src/main/res/values-gu/strings.xml b/OpenKeychain/src/main/res/values-gu/strings.xml index 36d62b6b4..5b26f35ec 100644 --- a/OpenKeychain/src/main/res/values-gu/strings.xml +++ b/OpenKeychain/src/main/res/values-gu/strings.xml @@ -295,5 +295,4 @@ લોક ખોલો નિષ્ક્રિય કરો પહેલાનું - સેટિંગ્સ diff --git a/OpenKeychain/src/main/res/values-hi/strings.xml b/OpenKeychain/src/main/res/values-hi/strings.xml index e018f5033..b3a409f45 100644 --- a/OpenKeychain/src/main/res/values-hi/strings.xml +++ b/OpenKeychain/src/main/res/values-hi/strings.xml @@ -214,6 +214,4 @@ पिछला समाप्त राय - जी नहीं, धन्यवाद - सेटिंग्स diff --git a/OpenKeychain/src/main/res/values-hu/strings.xml b/OpenKeychain/src/main/res/values-hu/strings.xml index b9748de2f..23cdfd3bf 100644 --- a/OpenKeychain/src/main/res/values-hu/strings.xml +++ b/OpenKeychain/src/main/res/values-hu/strings.xml @@ -218,8 +218,6 @@ Keybase.io igazolások Kapcsolatfelvétel a keybase.io-val a kulcsigazolásokért, és megtekintés minden alkalommal, amikor egy kulcs megjelenik (Az ikonok és számos képernyő még nem lett hozzáigazítva a sötét témához) - Névtelen használati statisztikák engedélyezése - Ha engedélyezve van, akkor névtelen használati statisztikákat küld, hogy segítsen az alkalmazás továbbfejlesztésében Tor engedélyezése Az Orbot telepítése szükséges @@ -743,9 +741,6 @@ Kulcsazonosító: %s Anoním / Névtelen # - Igen, szeretnék segíteni! - Köszönöm, nem - Beállítások Az alkulcs létrehozásra kerül Az alkulcs visszavonásra kerül A lejárat sohára változik diff --git a/OpenKeychain/src/main/res/values-id/strings.xml b/OpenKeychain/src/main/res/values-id/strings.xml index d5845d945..7444c20d8 100644 --- a/OpenKeychain/src/main/res/values-id/strings.xml +++ b/OpenKeychain/src/main/res/values-id/strings.xml @@ -249,5 +249,4 @@ Lihat Anonim # - Pengaturan diff --git a/OpenKeychain/src/main/res/values-it/strings.xml b/OpenKeychain/src/main/res/values-it/strings.xml index a9d7ce398..6e8273515 100644 --- a/OpenKeychain/src/main/res/values-it/strings.xml +++ b/OpenKeychain/src/main/res/values-it/strings.xml @@ -1177,6 +1177,4 @@ ID chiave: %s Anonimo # - No, grazie - Impostazioni diff --git a/OpenKeychain/src/main/res/values-ja/strings.xml b/OpenKeychain/src/main/res/values-ja/strings.xml index c3f3ff898..ef9dfbdfa 100644 --- a/OpenKeychain/src/main/res/values-ja/strings.xml +++ b/OpenKeychain/src/main/res/values-ja/strings.xml @@ -218,8 +218,6 @@ Keybase.io 検証 鍵の検証のためkeybase.ioに連絡し、鍵が表示されるたびに表示します (アイコンおよび多くの画面は、まだダークテーマに応じて調整されていません) - 匿名の使用統計データの送信を許可する - 有効にすると、アプリの改善に役立つ匿名の使用統計データが送信されます Torを有効 Orbotのインストールが要求されます @@ -1776,12 +1774,6 @@ 鍵 ID: %s 匿名 # - すべてのユーザーのエクスペリエンスを改善するために、OpenKeychainの匿名の使用統計データを送信していただけますか?\n\n詳細については、プライバシーポリシーをご覧ください。 - はい、匿名の使用統計データを送信して応援します! - いいえ、使用統計データを送信しません。 - 応援をありがとうございます! この設定は「設定」で変更できます。 - 大丈夫です、今後お尋ねしないようにします。「設定」でこの設定を変更できます。 - 設定 サブキーが作成されます サブキーは取り消されます サブキーは削除されます diff --git a/OpenKeychain/src/main/res/values-ko/strings.xml b/OpenKeychain/src/main/res/values-ko/strings.xml index 3e6f84e3f..f219a4076 100644 --- a/OpenKeychain/src/main/res/values-ko/strings.xml +++ b/OpenKeychain/src/main/res/values-ko/strings.xml @@ -207,8 +207,7 @@ 이 기능들은 아직 완성되지 않았거나 유저 경험/보안 연구의 결과가 아닙니다. 그러니 이 기능의 보안성에 의존하거나 겪는 문제를 보고하지 말아주세요! keybase.io에 연결해서 키가 표시될 때 마다 키 증명을 표시 (아이콘이나 많은 화면이 검은 테마에 알맞게 아직 조정되지 않았습니다) - 익명 사용 통계 허가 - + Tor 활성화 Orbot이 설치되어 있어야 합니다. 다른 프록시 활성화 @@ -896,10 +895,4 @@ 보기 키를 업데이트 중... 익명 - 모든 사용자의 경험을 개선하기 위해서 OpenKeychain가 익명 사용 데이터를 수집하는걸 허가 하시겠습니까?\n\n더 많은 정보는 저희의 개인정보 보호정책을 참고하십시오. - 예, 돕겠습니다! - 아니요 - 도와주셔서 감사합니다! 설정에서 언제든지 변경하실 수 있습니다. - 괜찮습니다. 이제 표시하지 않습니다. 마음이 바뀌신다면 설정에서 변경하실 수 있습니다. - 설정 diff --git a/OpenKeychain/src/main/res/values-ml/strings.xml b/OpenKeychain/src/main/res/values-ml/strings.xml index 4dc5120b6..980b83ef1 100644 --- a/OpenKeychain/src/main/res/values-ml/strings.xml +++ b/OpenKeychain/src/main/res/values-ml/strings.xml @@ -164,5 +164,4 @@ പ്രവർത്തനരഹിതമാക്കു പിന്നോട്ട് കാണുക - സെറ്റിംഗ്സ് diff --git a/OpenKeychain/src/main/res/values-nb/strings.xml b/OpenKeychain/src/main/res/values-nb/strings.xml index f25347683..5911b5878 100644 --- a/OpenKeychain/src/main/res/values-nb/strings.xml +++ b/OpenKeychain/src/main/res/values-nb/strings.xml @@ -869,6 +869,4 @@ oppdaterer nøkler… Nøkkel-ID: %s Anonym - Nei takk - Innstillinger diff --git a/OpenKeychain/src/main/res/values-nl-rBE/strings.xml b/OpenKeychain/src/main/res/values-nl-rBE/strings.xml index a2f489343..d9d3b947f 100644 --- a/OpenKeychain/src/main/res/values-nl-rBE/strings.xml +++ b/OpenKeychain/src/main/res/values-nl-rBE/strings.xml @@ -218,8 +218,6 @@ Keybase.io-bewijzen Maak contact met keybase.io voor bevestigingen van sleutels en toon deze telkens wanneer een sleutel wordt weergegeven (De pictogrammen en veel schermen zijn nog niet geoptimaliseerd voor het donkere thema) - Anonieme gebruikersstatistieken toestaan - Indien ingeschakeld worden er anonieme gebruikersstatistieken verzonden om de app te verbeteren Tor inschakelen Vereist dat Orbot geïnstalleerd is @@ -1804,12 +1802,6 @@ Sleutel-ID: %s Anoniem # - Mag OpenKeychain gebruikersstatistieken verzamelen om de ervaring voor alle gebruikers te verbeteren?\n\nVoor meer informatie, zie ons privacybeleid. - Ja, ik wil helpen! - Nee, bedankt - Bedankt voor de hulp! Je kan deze voorkeur veranderen in de instellingen. - Geen probleem, we zullen het niet opnieuw vragen. Je kan van gedachten veranderen in de instellingen. - Instellingen Subsleutel zal worden aangemaakt Subsleutel zal worden ingetrokken Subsleutel zal worden gestript diff --git a/OpenKeychain/src/main/res/values-nl/strings.xml b/OpenKeychain/src/main/res/values-nl/strings.xml index 30449a8d1..e3508df85 100644 --- a/OpenKeychain/src/main/res/values-nl/strings.xml +++ b/OpenKeychain/src/main/res/values-nl/strings.xml @@ -218,8 +218,6 @@ Keybase.io-bewijzen Maak contact met keybase.io voor bevestigingen van sleutels en weergeef dit elke keer als een sleutel wordt weer gegeven (De pictogrammen en veel schermen zijn nog niet geoptimaliseerd voor het donkere thema) - Sta anonieme gebruikersstatistieken toe - Indien ingeschakeld worden er anonieme gebruikersstatistieken verzonden om de app te verbeteren Tor inschakelen Vereist dat Orbot geïnstalleerd is @@ -1806,12 +1804,6 @@ Sleutel-ID: %s Anoniem # - Mag OpenKeychain gebruikersstatistieken verzamelen om de ervaring voor alle gebruikers te verbeteren?\n\nVoor meer informatie, zie ons privacybeleid. - Ja, ik wil meehelpen! - Nee, bedankt - Bedankt voor de hulp! Je kan deze voorkeur veranderen in de instellingen. - Geen probleem, we zullen het niet opnieuw vragen. Je kan van gedachten veranderen in de instellingen. - Instellingen Subsleutel zal worden aangemaakt Subsleutel zal worden ingetrokken Subsleutel zal worden gestript diff --git a/OpenKeychain/src/main/res/values-pl/strings.xml b/OpenKeychain/src/main/res/values-pl/strings.xml index 9f7e0d34d..3b8d6db21 100644 --- a/OpenKeychain/src/main/res/values-pl/strings.xml +++ b/OpenKeychain/src/main/res/values-pl/strings.xml @@ -218,8 +218,6 @@ Dowody keybase.io Sprawdź keybase.io dla dowodów kluczy i pokaż je za każdym razem kiedy klucz jest wyświetlany (Ikony i ekrany nie są jeszcze dostosowane do ciemnego motywu) - Zezwalaj na anonimowe statystyki użycia - Jeśli jest włączone wysyła anonimowe statystyki użycia aby pomóc w ulepszaniu aplikacji Włącz Tora Wymaga Orbota @@ -1872,12 +1870,6 @@ ID Klucza: %s Anonimowy # - Czy aby polepszyć doświadczenia użytkowników, OpenKeychain może zbierać anonimowe dane użytkowania?\n\nAby dowiedzieć się więcej zobacz naszą Politykę Prywatności. - Tak, chcę pomóc! - Nie, dzięki - Dziękujemy za pomoc! Możesz zmienić to ustawienie w opcjach. - Dobrze, nie zapytamy więcej. Możesz zmienić to ustawienie w opcjach. - Ustawienia Podklucz zostanie utworzony Podklucz zostanie unieważniony Podklucz zostanie wyczyszony diff --git a/OpenKeychain/src/main/res/values-pt-rBR/strings.xml b/OpenKeychain/src/main/res/values-pt-rBR/strings.xml index 4b51f02c3..662cba02c 100644 --- a/OpenKeychain/src/main/res/values-pt-rBR/strings.xml +++ b/OpenKeychain/src/main/res/values-pt-rBR/strings.xml @@ -218,8 +218,6 @@ Provas Keybase.io Contate o keybase.io para as provas de chaves e mostre-as toda vez que uma chave for exibida (Os ícones e algumas telas ainda não foram adaptados para o tema escuro) - Permitir estatísticas anônimas de uso - Se habilitado, envia estatísticas anônimas de uso para ajudar a melhorar a aplicação Ativar Tor Requer que o Orbot esteja instalado @@ -1804,12 +1802,6 @@ ID da Chave: %s Anônimo # - Para melhorar a experiência para todos os usuários, o OpenKeychain pode coletar estatísticas anônimas de uso?\n\nPara saber mais, consulte nossa Política de Privacidade. - Sim, eu quero ajudar! - Não, obrigado - Obrigado por nos ajudar! Você pode alterar esta preferência nas configurações. - Sem problema, não iremos pedir de novo. Você pode mudar de ideia nas configurações. - Configurações A subchave será criada A subchave será revogada A subchave será extirpada diff --git a/OpenKeychain/src/main/res/values-ro/strings.xml b/OpenKeychain/src/main/res/values-ro/strings.xml index 82c06e523..0eb37fecd 100644 --- a/OpenKeychain/src/main/res/values-ro/strings.xml +++ b/OpenKeychain/src/main/res/values-ro/strings.xml @@ -417,5 +417,4 @@ Vizualizare Anonim # - Setări diff --git a/OpenKeychain/src/main/res/values-ru/strings.xml b/OpenKeychain/src/main/res/values-ru/strings.xml index de85ba5f6..3937085f5 100644 --- a/OpenKeychain/src/main/res/values-ru/strings.xml +++ b/OpenKeychain/src/main/res/values-ru/strings.xml @@ -218,8 +218,6 @@ Подтверждение Keybase.io Опрашивать keybase.io для подтверждения ключей и показывать это каждый раз при отображении ключей (Значки и многие экраны ещё не скорректированы для тёмной темы) - Отправлять анонимную статистику - Если данная функция включена, приложение будет отправлять анонимную статистику для помощи разработчикам Использовать Tor Требуется установка Orbot @@ -1875,12 +1873,6 @@ ID ключа: %s Аноним # - Может ли OpenKeychain собирать анонимную статистику для улучшения работы приложения?\n\nЧтобы узнать больше, изучите нашу Политику конфиденциальности. - Да, я хочу помочь! - Нет, спасибо - Спасибо за помощь! Вы можете изменить данную функцию в настройках. - Всё нормально, больше мы не будем спрашивать. Вы можете изменить своё мнение с помощью настроек. - Настройки Доп. ключ будет создан Доп. ключ будет отозван Доп. ключ будет отделён diff --git a/OpenKeychain/src/main/res/values-sl/strings.xml b/OpenKeychain/src/main/res/values-sl/strings.xml index cbbadbdbd..8aff06054 100644 --- a/OpenKeychain/src/main/res/values-sl/strings.xml +++ b/OpenKeychain/src/main/res/values-sl/strings.xml @@ -831,6 +831,5 @@ Končaj Hranjenje gesla v spominu Posodabljam ključe... - Nastavitve - Deli ključ + Deli ključ diff --git a/OpenKeychain/src/main/res/values-sr/strings.xml b/OpenKeychain/src/main/res/values-sr/strings.xml index a41a920eb..061113704 100644 --- a/OpenKeychain/src/main/res/values-sr/strings.xml +++ b/OpenKeychain/src/main/res/values-sr/strings.xml @@ -1449,5 +1449,4 @@ Кеширај лозинку Ажурирам кључеве… ИД кључа: %s - Podešavanja diff --git a/OpenKeychain/src/main/res/values-sv/strings.xml b/OpenKeychain/src/main/res/values-sv/strings.xml index e8a36be17..41d397af1 100644 --- a/OpenKeychain/src/main/res/values-sv/strings.xml +++ b/OpenKeychain/src/main/res/values-sv/strings.xml @@ -218,8 +218,6 @@ Keybase.io proofs Kontakta keybase.io för nyckelbevis och visa dem varje gång en nyckel visas (Ikonerna och många skärmar är ännu inte justerade för mörkt tema) - Tillåt anonym användarstatistik - Om den är aktiverad skickar du anonym användarstatistik för att förbättra appen Aktivera Tor Kräver att Orbot är installerad @@ -1670,12 +1668,6 @@ Nyckel-ID: %s Anonym # - För att förbättra upplevelsen för alla användare, kan OpenKeychain samla anonym användningsstatistik?\n\nFör mer information, se vår integritetspolicy. - Ja, jag vill hjälpa till! - Nej tack - Tack för hjälpen! Du kan ändra denna inställning i inställningarna. - Det är okej, vi kommer inte att fråga igen. Du kan ändra dig i inställningarna. - Inställningar Undernyckel kommer att skapas Undernyckel kommer att återkallas Undernyckeln kommer att avskalas diff --git a/OpenKeychain/src/main/res/values-te/strings.xml b/OpenKeychain/src/main/res/values-te/strings.xml index eabe757e5..d0440cd92 100644 --- a/OpenKeychain/src/main/res/values-te/strings.xml +++ b/OpenKeychain/src/main/res/values-te/strings.xml @@ -127,5 +127,4 @@ రద్దు సంబంధిత రద్దు - సెట్టింగులు diff --git a/OpenKeychain/src/main/res/values-th/strings.xml b/OpenKeychain/src/main/res/values-th/strings.xml index 5643a9a2c..3d9ac0d67 100644 --- a/OpenKeychain/src/main/res/values-th/strings.xml +++ b/OpenKeychain/src/main/res/values-th/strings.xml @@ -212,5 +212,4 @@ ย้อนกลับ เสร็จ ดู - การตั้งค่า diff --git a/OpenKeychain/src/main/res/values-tr/strings.xml b/OpenKeychain/src/main/res/values-tr/strings.xml index 3a538a358..eac384bc9 100644 --- a/OpenKeychain/src/main/res/values-tr/strings.xml +++ b/OpenKeychain/src/main/res/values-tr/strings.xml @@ -523,6 +523,4 @@ Göster Parola önbelleği Anonim - Hayır, teşekkürler - Ayarlar diff --git a/OpenKeychain/src/main/res/values-uk/strings.xml b/OpenKeychain/src/main/res/values-uk/strings.xml index cf889711d..6bbb8702f 100644 --- a/OpenKeychain/src/main/res/values-uk/strings.xml +++ b/OpenKeychain/src/main/res/values-uk/strings.xml @@ -218,9 +218,7 @@ Перевірки Keybase.io Контактувати з keybase.io для підтвердження ключа та показувати дійсності щоразу, коли ключ відображено (Піктограми та більшість екранів не налаштовані для темної теми) - Дозволити анонімну статистику про використання - Якщо увімкнено, надсилає анонімну статистику про використання, щоби допомогти покращити цей застосунок - + Увімкнути Tor Потребує інсталяції Orbot Увімкнути інше проксі @@ -1876,13 +1874,7 @@ Ідентифікатор ключа: %s Анонімно # - Щоб покращити досвід для всіх користувачів, чи може OpenKeychain збирати анонімну статистику про використання?\n\nЩоби дізнатися більше, див. нашу Політику конфіденційності. - Так, я хочу допомогти! - Ні, дякую - Дякуємо за допомогу! Ви можете змінити цей параметр у налаштуваннях. - Усе добре, ми не будемо запитувати вас знову. Ви можете змінити свою думку в налаштуваннях. - Налаштування - Підключ буде створено + Підключ буде створено Підключ буде відкликано Підключ буде відділено Термін дії буде змінено на ніколи diff --git a/OpenKeychain/src/main/res/values-vi/strings.xml b/OpenKeychain/src/main/res/values-vi/strings.xml index 08137ae58..52a57cfd8 100644 --- a/OpenKeychain/src/main/res/values-vi/strings.xml +++ b/OpenKeychain/src/main/res/values-vi/strings.xml @@ -371,5 +371,4 @@ Kết thúc Xem Ẩn danh - Thiết đặt diff --git a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml index 60eefebd0..2d0af733e 100644 --- a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml +++ b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml @@ -216,8 +216,7 @@ 自動金鑰同步 警告 Keybase.io 證明 - 允許匿名的使用資料收集 - + 啟用洋蔥(Tor)網路 必須已安裝 Orbot 啟用其他代理伺服器 @@ -967,9 +966,6 @@ 金鑰 ID: %s 匿名 # - 是的,我想協助! - 不用,謝謝 - 設定 子金鑰將被創建 子金鑰將被撤銷 子金鑰將被分離 diff --git a/OpenKeychain/src/main/res/values-zh/strings.xml b/OpenKeychain/src/main/res/values-zh/strings.xml index 9ee982cae..d8a0ebd96 100644 --- a/OpenKeychain/src/main/res/values-zh/strings.xml +++ b/OpenKeychain/src/main/res/values-zh/strings.xml @@ -218,8 +218,6 @@ Keybase.io 证明 每次展示密钥时自动从keybase.io获取证明并显示它们 (图标和某些界面还未根据深色主题进行调整) - 允许使用匿名统计数据 - 如果开启,发送匿名的统计数据来帮助我们改进此软件 启用 Tor 代理 必需已安装 Orbot @@ -1772,12 +1770,6 @@ 密钥 ID:%s 匿名 # - 为改善所有用户的使用体验,允许OpenKeychain匿名搜集一些使用统计信息吗?\n\n想知道更多,查阅我们的隐私政策 - 是的,我愿意帮忙! - 不用了,谢谢 - 感谢帮助!你可以在设置中更改这些偏好。 - 没问题,我们不会再次打扰你。如果改变了想法,你可以在设置中更改。 - 设置 将创建子密钥 将吊销子密钥 将剥离子密钥 diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index 2894183d4..597ca093c 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -231,9 +231,6 @@ "(The icons and many screens are not yet adjusted accordingly for the dark theme)" - Allow anonymous usage statistics - If enabled, sends anonymous usage statistics to help improve the app - "Enable Tor" "Requires Orbot to be installed" @@ -1908,13 +1905,6 @@ Anonymous # - "To improve the experience for all users, may OpenKeychain collect anonymous usage statistics?\n\nTo find out more, see our Privacy Policy." - "Yes, I want to help!" - "No, thanks" - - "Thanks for helping out! You can change this preference in the settings." - "That's alright, we won't ask again. You can change your mind in the settings." - "Settings" Subkey will be created Subkey will be revoked Subkey will be stripped diff --git a/OpenKeychain/src/main/res/xml/experimental_preferences.xml b/OpenKeychain/src/main/res/xml/experimental_preferences.xml index e88275d88..0050965b6 100644 --- a/OpenKeychain/src/main/res/xml/experimental_preferences.xml +++ b/OpenKeychain/src/main/res/xml/experimental_preferences.xml @@ -5,13 +5,6 @@ android:summary="@string/label_experimental_settings_desc_summary" android:title="@string/label_experimental_settings_desc_title" /> - -