New settings to delete fingerprints

This commit is contained in:
Jeremy
2018-01-27 15:49:23 +01:00
parent c20f453b90
commit 9ac060ea05
5 changed files with 66 additions and 28 deletions

View File

@@ -19,12 +19,14 @@
*/ */
package com.keepassdroid.settings; package com.keepassdroid.settings;
import android.content.DialogInterface;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.v14.preference.SwitchPreference; import android.support.v14.preference.SwitchPreference;
import android.support.v4.app.DialogFragment; import android.support.v4.app.DialogFragment;
import android.support.v4.hardware.fingerprint.FingerprintManagerCompat; import android.support.v4.hardware.fingerprint.FingerprintManagerCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat; import android.support.v7.preference.PreferenceFragmentCompat;
import android.util.Log; import android.util.Log;
@@ -118,36 +120,37 @@ public class NestedSettingsFragment extends PreferenceFragmentCompat {
return false; 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; break;
case NESTED_SCREEN_DB_KEY: 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 @Override
public void onDisplayPreferenceDialog(Preference preference) { public void onDisplayPreferenceDialog(Preference preference) {
// Try if the preference is one of our custom Preferences // Try if the preference is one of our custom Preferences

View File

@@ -226,6 +226,9 @@
<string name="fingerprint">Empreinte digitale</string> <string name="fingerprint">Empreinte digitale</string>
<string name="fingerprint_enable_title">Écoute d\'empreintes digitales</string> <string name="fingerprint_enable_title">Écoute d\'empreintes digitales</string>
<string name="fingerprint_enable_summary">Activer l\'ouverture de la base de données par empreinte digitale</string> <string name="fingerprint_enable_summary">Activer l\'ouverture de la base de données par empreinte digitale</string>
<string name="fingerprint_delete_all_title">Supprimer les clés de chiffrement</string>
<string name="fingerprint_delete_all_summary">Supprimer toutes les clés de chiffrement liées à la reconnaissance des empreintes digitales</string>
<string name="fingerprint_delete_all_warning">Êtes-vous sûr de vouloir supprimer toutes les clés liées aux empreintes digitales?</string>
<string name="unavailable_feature_text">Impossible de démarrer cette fonctionnalité.</string> <string name="unavailable_feature_text">Impossible de démarrer cette fonctionnalité.</string>
<string name="unavailable_feature_version">Votre version Android %1$d n\'est pas la version minimale %2$d requise.</string> <string name="unavailable_feature_version">Votre version Android %1$d n\'est pas la version minimale %2$d requise.</string>
<string name="unavailable_feature_hardware">Le matériel n\'est pas détecté.</string> <string name="unavailable_feature_hardware">Le matériel n\'est pas détecté.</string>

View File

@@ -56,6 +56,7 @@
<string name="clipboard_notifications_key" translatable="false">clipboard_notifications_key</string> <string name="clipboard_notifications_key" translatable="false">clipboard_notifications_key</string>
<string name="lock_database_screen_off_key" translatable="false">lock_database_screen_off_key</string> <string name="lock_database_screen_off_key" translatable="false">lock_database_screen_off_key</string>
<string name="fingerprint_enable_key" translatable="true">fingerprint_enable_key</string> <string name="fingerprint_enable_key" translatable="true">fingerprint_enable_key</string>
<string name="fingerprint_delete_all_key" translatable="true">fingerprint_delete_all_key</string>
<bool name="maskpass_default" translatable="false">true</bool> <bool name="maskpass_default" translatable="false">true</bool>
<bool name="keyfile_default" translatable="false">true</bool> <bool name="keyfile_default" translatable="false">true</bool>

View File

@@ -227,6 +227,9 @@
<string name="fingerprint">Fingerprint</string> <string name="fingerprint">Fingerprint</string>
<string name="fingerprint_enable_title">Fingerprint listening</string> <string name="fingerprint_enable_title">Fingerprint listening</string>
<string name="fingerprint_enable_summary">Enable database opening by fingerprint</string> <string name="fingerprint_enable_summary">Enable database opening by fingerprint</string>
<string name="fingerprint_delete_all_title">Delete encryption keys</string>
<string name="fingerprint_delete_all_summary">Delete all encryption keys related to fingerprint recognition</string>
<string name="fingerprint_delete_all_warning">Are you sure you want to delete all the keys related to fingerprints?</string>
<string name="unavailable_feature_text">Can not start this feature.</string> <string name="unavailable_feature_text">Can not start this feature.</string>
<string name="unavailable_feature_version">Your Android version %1$d is not the minimum version %2$d required.</string> <string name="unavailable_feature_version">Your Android version %1$d is not the minimum version %2$d required.</string>
<string name="unavailable_feature_hardware">The hardware is not detected.</string> <string name="unavailable_feature_hardware">The hardware is not detected.</string>

View File

@@ -118,6 +118,10 @@
android:title="@string/fingerprint_enable_title" android:title="@string/fingerprint_enable_title"
android:summary="@string/fingerprint_enable_summary" android:summary="@string/fingerprint_enable_summary"
android:defaultValue="@bool/fingerprint_enable_default"/> android:defaultValue="@bool/fingerprint_enable_default"/>
<android.support.v7.preference.Preference
android:key="@string/fingerprint_delete_all_key"
android:title="@string/fingerprint_delete_all_title"
android:summary="@string/fingerprint_delete_all_summary" />
</android.support.v7.preference.PreferenceCategory> </android.support.v7.preference.PreferenceCategory>