From c8a952616f1ea064a0c9ffd61124a6b915efe6aa Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 19 Oct 2020 14:10:16 +0200 Subject: [PATCH] Setting to close database after Autofill selection #755 --- CHANGELOG | 1 + .../keepass/activities/AutofillLauncherActivity.kt | 5 +++++ .../keepass/activities/PasswordActivity.kt | 5 +++++ .../activities/selection/SpecialModeActivity.kt | 7 +++++++ .../kunzisoft/keepass/settings/PreferencesUtil.kt | 7 +++++++ app/src/main/res/values/donottranslate.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/preferences_autofill.xml | 13 +++++++++---- fastlane/metadata/android/en-US/changelogs/44.txt | 1 + fastlane/metadata/android/fr-FR/changelogs/44.txt | 1 + 10 files changed, 40 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index adc773bcb..74998d3ce 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ KeePassDX(2.9) * Upgrade to Android API 30 #723 * Save new credentials with Autofill #524 + * Setting to close database after Autofill selection #755 * Fix biometric issues #724 #740 #731 * Fix autofill #725 #551 * Small fixes and translations #732 #736 #737 #738 #742 diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/AutofillLauncherActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/AutofillLauncherActivity.kt index 6f621e6ed..09d9e427b 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/AutofillLauncherActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/AutofillLauncherActivity.kt @@ -39,6 +39,7 @@ import com.kunzisoft.keepass.database.search.SearchHelper import com.kunzisoft.keepass.model.RegisterInfo import com.kunzisoft.keepass.model.SearchInfo import com.kunzisoft.keepass.settings.PreferencesUtil +import com.kunzisoft.keepass.utils.LOCK_ACTION @RequiresApi(api = Build.VERSION_CODES.O) class AutofillLauncherActivity : AppCompatActivity() { @@ -82,6 +83,10 @@ class AutofillLauncherActivity : AppCompatActivity() { { items -> // Items found AutofillHelper.buildResponse(this, items) + if (PreferencesUtil.isAutofillCloseDatabaseEnable(this)) { + // Close the database + sendBroadcast(Intent(LOCK_ACTION)) + } finish() }, { diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt index e63468caa..04556fd27 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt @@ -323,6 +323,7 @@ open class PasswordActivity : SpecialModeActivity() { }, { // Simply close if database not opened, normally not happened + onCancelSpecialMode() } ) // Do not keep history @@ -336,6 +337,7 @@ open class PasswordActivity : SpecialModeActivity() { { items -> // Response is build AutofillHelper.buildResponse(this, items) + onValidateSpecialMode() finish() }, { @@ -347,11 +349,13 @@ open class PasswordActivity : SpecialModeActivity() { searchInfo, readOnly) } else { + onCancelSpecialMode() finish() } }, { // Simply close if database not opened, normally not happened + onCancelSpecialMode() finish() } ) @@ -373,6 +377,7 @@ open class PasswordActivity : SpecialModeActivity() { }, { // Simply close if database not opened, normally not happened + onCancelSpecialMode() } ) // Do not keep history diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/selection/SpecialModeActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/selection/SpecialModeActivity.kt index 281138532..a2c33ae03 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/selection/SpecialModeActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/selection/SpecialModeActivity.kt @@ -1,5 +1,6 @@ package com.kunzisoft.keepass.activities.selection +import android.content.Intent import android.os.Build import android.view.View import android.widget.Toast @@ -10,6 +11,7 @@ import com.kunzisoft.keepass.activities.helpers.TypeMode import com.kunzisoft.keepass.activities.stylish.StylishActivity import com.kunzisoft.keepass.model.SearchInfo import com.kunzisoft.keepass.settings.PreferencesUtil +import com.kunzisoft.keepass.utils.LOCK_ACTION import com.kunzisoft.keepass.view.SpecialModeView /** @@ -58,6 +60,11 @@ abstract class SpecialModeActivity : StylishActivity() { moveTaskToBack(true) } } + if (mTypeMode == TypeMode.AUTOFILL + && PreferencesUtil.isAutofillCloseDatabaseEnable(this)) { + // Close the database + sendBroadcast(Intent(LOCK_ACTION)) + } } open fun onCancelSpecialMode() { diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt index fa9560571..c2fa4e2a8 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt @@ -383,6 +383,13 @@ object PreferencesUtil { context.resources.getBoolean(R.bool.keyboard_previous_fill_in_default)) } + fun isAutofillCloseDatabaseEnable(context: Context): Boolean { + val prefs = PreferenceManager.getDefaultSharedPreferences(context) + return prefs.getBoolean(context.getString(R.string.autofill_close_database_key), + context.resources.getBoolean(R.bool.autofill_close_database_default)) + } + + fun isAutofillAutoSearchEnable(context: Context): Boolean { val prefs = PreferenceManager.getDefaultSharedPreferences(context) return prefs.getBoolean(context.getString(R.string.autofill_auto_search_key), diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 7824c08ec..89eceee0d 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -139,6 +139,8 @@ false keyboard_previous_fill_in_key false + autofill_close_database_key + false autofill_auto_search_key true autofill_save_search_info_key diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ab411c94b..6cfe7df28 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -403,6 +403,8 @@ Automatically switch back to the previous keyboard on the database credentials screen Auto key action Automatically switch back to the previous keyboard after executing "Auto key action" + Close database + Close the database after an autofill selection Auto search Automatically suggest search results from the web domain or application ID Save search info diff --git a/app/src/main/res/xml/preferences_autofill.xml b/app/src/main/res/xml/preferences_autofill.xml index 5addda462..53f00db66 100644 --- a/app/src/main/res/xml/preferences_autofill.xml +++ b/app/src/main/res/xml/preferences_autofill.xml @@ -19,20 +19,25 @@ --> + android:title="@string/general"> + + + - -