diff --git a/app/src/main/java/com/keepassdroid/activities/EntryActivity.java b/app/src/main/java/com/keepassdroid/activities/EntryActivity.java index bd9425660..3358b8b40 100644 --- a/app/src/main/java/com/keepassdroid/activities/EntryActivity.java +++ b/app/src/main/java/com/keepassdroid/activities/EntryActivity.java @@ -165,12 +165,14 @@ public class EntryActivity extends LockingHideActivity { mEntry.getUsername(), getResources())); // Add password to notifications - if (mEntry.getPassword().length() > 0) - notificationFields.add( - new NotificationField( - NotificationField.NotificationFieldId.PASSWORD, - mEntry.getPassword(), - getResources())); + if (PreferencesUtil.allowCopyPassword(this)) { + if (mEntry.getPassword().length() > 0) + notificationFields.add( + new NotificationField( + NotificationField.NotificationFieldId.PASSWORD, + mEntry.getPassword(), + getResources())); + } // Add extra fields if (mEntry.allowExtraFields()) { try { @@ -219,10 +221,12 @@ public class EntryActivity extends LockingHideActivity { ); entryContentsView.assignPassword(mEntry.getPassword(true, pm)); - entryContentsView.assignPasswordCopyListener(view -> - clipboardHelper.timeoutCopyToClipboard(mEntry.getPassword(true, App.getDB().pm), - getString(R.string.copy_field, getString(R.string.entry_password))) - ); + if (PreferencesUtil.allowCopyPassword(this)) { + entryContentsView.assignPasswordCopyListener(view -> + clipboardHelper.timeoutCopyToClipboard(mEntry.getPassword(true, App.getDB().pm), + getString(R.string.copy_field, getString(R.string.entry_password))) + ); + } entryContentsView.assignURL(mEntry.getUrl(true, pm)); diff --git a/app/src/main/java/com/keepassdroid/settings/PreferencesUtil.java b/app/src/main/java/com/keepassdroid/settings/PreferencesUtil.java index 422729a74..171638d42 100644 --- a/app/src/main/java/com/keepassdroid/settings/PreferencesUtil.java +++ b/app/src/main/java/com/keepassdroid/settings/PreferencesUtil.java @@ -131,4 +131,10 @@ public class PreferencesUtil { return prefs.getBoolean(ctx.getString(R.string.auto_open_file_uri_key), ctx.getResources().getBoolean(R.bool.auto_open_file_uri_default)); } + + public static boolean allowCopyPassword(Context ctx) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx); + return prefs.getBoolean(ctx.getString(R.string.allow_copy_password_key), + ctx.getResources().getBoolean(R.bool.allow_copy_password_default)); + } } diff --git a/app/src/main/java/com/keepassdroid/view/EntryContentsView.java b/app/src/main/java/com/keepassdroid/view/EntryContentsView.java index 9074900cf..271526b61 100644 --- a/app/src/main/java/com/keepassdroid/view/EntryContentsView.java +++ b/app/src/main/java/com/keepassdroid/view/EntryContentsView.java @@ -130,6 +130,7 @@ public class EntryContentsView extends LinearLayout { passwordView.setText(password); if (fontInVisibility) Util.applyFontVisibilityTo(passwordView); + passwordActionView.setVisibility(GONE); } else { passwordContainerView.setVisibility(GONE); } @@ -137,6 +138,7 @@ public class EntryContentsView extends LinearLayout { public void assignPasswordCopyListener(OnClickListener onClickListener) { passwordActionView.setOnClickListener(onClickListener); + passwordActionView.setVisibility(VISIBLE); } public boolean isPasswordPresent() { diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 379d480ea..eb1238bb7 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -243,6 +243,8 @@ Change la police de caractères des champs pour une meilleure visibilité Ouvrir le fichier sélectionné automatiquement Ouvrir automatiquement un fichier à partir de l\'écran de sélection après une sélection dans le navigateur de fichiers + Copie de mot de passe + Autoriser la copie du mot de passe dans le presse-papiers. Attention: ceci est connu comme un défaut de sécurité 5 secondes diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index b58fd1efb..58213d7af 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -66,6 +66,7 @@ recycle_bin_key monospace_font_extra_fields_enable_key auto_open_file_uri_key + allow_copy_password_key true true @@ -82,6 +83,7 @@ true true true + true 300000 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8d97eca40..0ebe07f66 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -244,6 +244,8 @@ Change the font of the fields for better character visibility Auto open selected file Automatically open a file from the selection screen after a selection in the file browser + Copy of password + Allow the copy of the password to the clipboard. Warning: this is known as a security defect 5 seconds diff --git a/app/src/main/res/xml/app_preferences.xml b/app/src/main/res/xml/app_preferences.xml index c3b18a1a8..16320828a 100644 --- a/app/src/main/res/xml/app_preferences.xml +++ b/app/src/main/res/xml/app_preferences.xml @@ -80,6 +80,11 @@ android:title="@string/maskpass_title" android:summary="@string/maskpass_summary" android:defaultValue="@bool/maskpass_default"/> +