From 9ac060ea05b693c990bca90ae05112ab42102760 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sat, 27 Jan 2018 15:49:23 +0100 Subject: [PATCH] New settings to delete fingerprints --- .../settings/NestedSettingsFragment.java | 83 ++++++++++++------- app/src/main/res/values-fr/strings.xml | 3 + app/src/main/res/values/donottranslate.xml | 1 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/xml/app_preferences.xml | 4 + 5 files changed, 66 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/keepassdroid/settings/NestedSettingsFragment.java b/app/src/main/java/com/keepassdroid/settings/NestedSettingsFragment.java index 80e9700aa..f6ec41006 100644 --- a/app/src/main/java/com/keepassdroid/settings/NestedSettingsFragment.java +++ b/app/src/main/java/com/keepassdroid/settings/NestedSettingsFragment.java @@ -19,12 +19,14 @@ */ package com.keepassdroid.settings; +import android.content.DialogInterface; import android.content.res.Resources; import android.os.Build; import android.os.Bundle; import android.support.v14.preference.SwitchPreference; import android.support.v4.app.DialogFragment; import android.support.v4.hardware.fingerprint.FingerprintManagerCompat; +import android.support.v7.app.AlertDialog; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceFragmentCompat; import android.util.Log; @@ -118,36 +120,37 @@ public class NestedSettingsFragment extends PreferenceFragmentCompat { return false; } }); - } else { - fingerprintEnablePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - - public boolean onPreferenceChange(Preference preference, Object newValue) { - Boolean value = (Boolean) newValue; - if (!value) { - FingerPrintHelper fingerPrintHelper = new FingerPrintHelper( - getContext(), new FingerPrintHelper.FingerPrintCallback() { - @Override - public void handleEncryptedResult(String value, String ivSpec) {} - - @Override - public void handleDecryptedResult(String value) {} - - @Override - public void onInvalidKeyException() {} - - @Override - public void onFingerPrintException(Exception e) { - Toast.makeText(getContext(), R.string.fingerprint_error, Toast.LENGTH_SHORT).show(); - } - }); - fingerPrintHelper.deleteEntryKey(); - PrefsUtil.deleteAllValuesFromNoBackupPreferences(getContext()); - } - return true; - } - }); } + Preference deleteKeysFingerprints = findPreference(getString(R.string.fingerprint_delete_all_key)); + deleteKeysFingerprints.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + new AlertDialog.Builder(getContext()) + .setMessage(getResources().getString(R.string.fingerprint_delete_all_warning)) + .setIcon(getResources().getDrawable( + android.R.drawable.ic_dialog_alert)) + .setPositiveButton( + getResources().getString(android.R.string.yes), + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + deleteAllKeysForFingerprints(); + } + }) + .setNegativeButton( + getResources().getString(android.R.string.no), + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + } + }).show(); + return false; + } + }); + break; case NESTED_SCREEN_DB_KEY: @@ -182,6 +185,30 @@ public class NestedSettingsFragment extends PreferenceFragmentCompat { } } + /** + * Delete all entries of NoBackup preference and remove entry key in keystore + */ + private void deleteAllKeysForFingerprints() { + FingerPrintHelper fingerPrintHelper = new FingerPrintHelper( + getContext(), new FingerPrintHelper.FingerPrintCallback() { + @Override + public void handleEncryptedResult(String value, String ivSpec) {} + + @Override + public void handleDecryptedResult(String value) {} + + @Override + public void onInvalidKeyException() {} + + @Override + public void onFingerPrintException(Exception e) { + Toast.makeText(getContext(), R.string.fingerprint_error, Toast.LENGTH_SHORT).show(); + } + }); + fingerPrintHelper.deleteEntryKey(); + PrefsUtil.deleteAllValuesFromNoBackupPreferences(getContext()); + } + @Override public void onDisplayPreferenceDialog(Preference preference) { // Try if the preference is one of our custom Preferences diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 96d085900..1f54b6a96 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -226,6 +226,9 @@ Empreinte digitale Écoute d\'empreintes digitales Activer l\'ouverture de la base de données par empreinte digitale + Supprimer les clés de chiffrement + Supprimer toutes les clés de chiffrement liées à la reconnaissance des empreintes digitales + Êtes-vous sûr de vouloir supprimer toutes les clés liées aux empreintes digitales? Impossible de démarrer cette fonctionnalité. Votre version Android %1$d n\'est pas la version minimale %2$d requise. Le matériel n\'est pas détecté. diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 747b2c060..55b583650 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -56,6 +56,7 @@ clipboard_notifications_key lock_database_screen_off_key fingerprint_enable_key + fingerprint_delete_all_key true true diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9ba185626..b7a35430b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -227,6 +227,9 @@ Fingerprint Fingerprint listening Enable database opening by fingerprint + Delete encryption keys + Delete all encryption keys related to fingerprint recognition + Are you sure you want to delete all the keys related to fingerprints? Can not start this feature. Your Android version %1$d is not the minimum version %2$d required. The hardware is not detected. diff --git a/app/src/main/res/xml/app_preferences.xml b/app/src/main/res/xml/app_preferences.xml index 17c7bd41f..76e3337fb 100644 --- a/app/src/main/res/xml/app_preferences.xml +++ b/app/src/main/res/xml/app_preferences.xml @@ -118,6 +118,10 @@ android:title="@string/fingerprint_enable_title" android:summary="@string/fingerprint_enable_summary" android:defaultValue="@bool/fingerprint_enable_default"/> +