From 371b3813d4cb33ce986917cc926127d6069caf1d Mon Sep 17 00:00:00 2001 From: Yudong <1939245371@qq.com> Date: Tue, 1 Jun 2021 08:07:03 +0000 Subject: [PATCH 01/13] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (528 of 528 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 4efc04ef0..1b4ad6c1b 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -100,7 +100,7 @@ 减号 从不 没有搜索结果 - 需要安装网络浏览器才能打开这个URL。 + 需要安装网络浏览器才能打开这个网址。 正在新建数据库… 正在处理… 移除 @@ -317,7 +317,7 @@ 条目选择 在查看条目时,在专用键盘中显示输入字段 删除密码 - 在连接数据库尝试后删除输入的密码 + 在尝试连接数据库后删除输入的密码 打开文件 子节点 增加节点 @@ -432,7 +432,7 @@ 添加附件 放弃更改? 验证 - 自动推荐从网站域名或应用程序中搜索的结果 + 自动建议匹配的网址域名或应用程序 ID 的搜索结果 自动搜索 在用户界面中显示锁定数据库按钮 显示锁定数据库按钮 @@ -444,11 +444,11 @@ 重新启动包含该表单的应用程序以激活拦截。 阻止自动填充 禁止在下列域名中自动填充凭证 - Web 域名黑名单 + 网址域名黑名单 禁止应用程序自动填充的黑名单 应用拦截列表 过滤器 - 搜索带有子域约束的web域 + 搜索带有子域约束的网址域名 子域搜索 文本和请求的条目不匹配. 添加条目 @@ -509,7 +509,7 @@ 警告:即使您使用高级解锁识别,您仍然需要记住您的主密码。 高级解锁识别 点击以打开高级解锁提示来存储凭证 - 点击以使用生物识别解锁 + 点击以使用高级识别解锁 删除高级解锁密钥 输入 退格键 From 13002f96f1d6c32f3192cf0e7f32ecde28f1389d Mon Sep 17 00:00:00 2001 From: VfBFan Date: Sat, 5 Jun 2021 15:24:07 +0000 Subject: [PATCH 02/13] Translated using Weblate (German) Currently translated at 100.0% (528 of 528 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/ --- app/src/main/res/values-de/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 0b81b8806..a6db08750 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -283,7 +283,7 @@ Schreibgeschützt Schreibschutz der Datenbank aktivieren Datenbank standardmäßig schreibgeschützt öffnen - Den Öffnungsmodus für die Sitzung ändern. + Den Modus bei Eröffnung der Sitzung ändern. \n \n„Schreibgeschützt“ verhindert unbeabsichtigte Änderungen an der Datenbank. \nMit „Änderbar“ können Sie alle Elemente nach Belieben hinzufügen, löschen oder ändern. From 8be382fa7e9b71b29247bd9eff959d07ff9c5940 Mon Sep 17 00:00:00 2001 From: solokot Date: Tue, 8 Jun 2021 10:11:25 +0000 Subject: [PATCH 03/13] Translated using Weblate (Russian) Currently translated at 100.0% (528 of 528 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/ --- app/src/main/res/values-ru/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index a303ca9a0..28723f84d 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -36,7 +36,7 @@ Не удалось очистить буфер обмена Задержка очистки буфера обмена Продолжительность хранения в буфере обмена (если поддерживается устройством) - Выберите %1$s для копирования в буфер обмена + Нажатие скопирует «%1$s» в буфер Получение ключа базы… База Расшифровка базы… @@ -58,7 +58,7 @@ Сохранить Название Ссылка - Имя пользователя + Пользователь Потоковый шифр Arcfour не поддерживается. Невозможно обработать указанный URI в KeePassDX. Невозможно создать файл From d321283b13186368822a6b07d24df7f7d06a4ab5 Mon Sep 17 00:00:00 2001 From: djib Date: Wed, 9 Jun 2021 20:42:16 +0200 Subject: [PATCH 04/13] Improve Magikeyboard options descriptions --- app/src/main/res/values/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8c3e1c39c..32568cb19 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -413,13 +413,13 @@ Magikeyboard settings Entry Entry selection - Show input fields in Magikeyboard when viewing an entry + When viewing an entry in KeePassDX, populate Magikeyboard with that entry Notification info Show a notification when an entry is available Search shared info - Automatically search for shared information to populate the keyboard + When sharing a URL to KeePassDX, filter the entries using that URL domain Save shared info - Try to save shared information when making a manual entry selection + After sharing a URL to KeePassDX, when an entry is selected, try to remember that entry for further uses Clear at closing Close the database when closing the notification Timeout @@ -566,4 +566,4 @@ Expired entries are not shown Show UUID Displays the UUID linked to an entry - \ No newline at end of file + From 075ee815f0f181dc42098d5a40d63009f0ffedb7 Mon Sep 17 00:00:00 2001 From: djib Date: Wed, 9 Jun 2021 20:54:19 +0200 Subject: [PATCH 05/13] Improve French translation mostly for Magikeyboard --- app/src/main/res/values-fr/strings.xml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 4bd9e2545..698c18bb1 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -301,7 +301,7 @@ Paramètres Magiclavier Entrée Délai d’expiration - Délai d’expiration pour effacer l’entrée au clavier + Délai d’expiration pour effacer l’entrée disponible dans le clavier Informations de notification Affiche une notification lorsqu’une entrée est disponible Entrée @@ -312,11 +312,11 @@ Apparence Thème du clavier Touches - Touches vibrantes - Appui clavier audible + Vibration des touches + Son de pression des touches Changement de clavier - Écran des identifications de la base de données - Revenir automatiquement au clavier précédent sur l’écran des identifications de la base de données + Écran d'authentification de la base de données + Revenir automatiquement au clavier précédent sur l’écran d'authentification de la base de données Action de touche automatique Revenir automatiquement au clavier précédent après avoir exécuté « Action de touche automatique » Mode sélection @@ -327,7 +327,7 @@ Verrouille la base de données lorsque la durée du presse-papier expire ou que la notification est fermée après avoir commencé à l’utiliser Corbeille Sélection de l’entrée - Affiche les champs de saisie dans le Magiclavier lors de l’affichage d’une entrée + Lors de la sélection d'une entrée dans KeePassDX, rentre cette entrée disponible dans le Magiclavier Supprimer le mot de passe Supprime le mot de passe saisi après une tentative de connexion à une base de données Ouvrir le fichier @@ -417,7 +417,7 @@ Restaurer l’historique Effacer l’historique Action de touche automatique - Action de la touche « Go » après avoir appuyé sur une touche « Champ » + Effectuer l'action de la touche « Go » automatiquement après avoir appuyé sur une touche « Champ » du clavier Téléchargement %1$s Initialisation… En cours : %1$d%% @@ -459,7 +459,7 @@ Liste de blocage de domaine Web Liste de blocage qui empêche le remplissage automatique des applications Liste de blocage d’application - Recherche automatiquement les informations partagées pour remplir le clavier + Lorsqu'une adresse web est partagée avec KeePassDX, filtrer automatiquement les entrées contenant le domaine Rechercher les informations partagées Filtre Recherche des domaines Web avec des contraintes de sous-domaines @@ -493,7 +493,7 @@ Fermer la base de données Revient automatiquement au clavier précédent après le verrouillage de la base de données Verrouiller la base de données - Essayer d’enregistrer les informations partagées lors de la sélection manuelle d’une entrée + Essayer d’enregistrer l'association entre une adresse web partagée à KeePassDX et l'entrée sélectionnée manuellement Enregistrer les infos partagées Notification Mise à jour de sécurité biométrique requise. @@ -536,7 +536,7 @@ Impossible de reconstruire correctement la liste. L\'URI de la base de données ne peut pas être récupéré. Suggestions de remplissage automatique ajoutées. - Tente d\'afficher des suggestions de remplissage automatique directement à partir d\'un clavier compatible + Tente d\'afficher des suggestions de remplissage automatique dans la barre de suggestions des claviers compatibles Suggestions en ligne Écraser les modifications externes en sauvegardant la base de données ou recharger-la avec les dernières modifications. Accès au dossier révoqué par le gestionnaire de fichiers, fermer la base de données et la rouvrir à partir de son emplacement. @@ -570,4 +570,4 @@ Une erreur s\'est produite lors de l\'exécution d\'une action sur la base de données. Vous ne pouvez pas déplacer un groupe ici. Ce mot est réservé et ne peut pas être utilisé. - \ No newline at end of file + From f486150a0f9a488617ab41a58fd1cdba38afcab9 Mon Sep 17 00:00:00 2001 From: djib Date: Wed, 9 Jun 2021 20:58:08 +0200 Subject: [PATCH 06/13] Fix a typo --- app/src/main/res/values-fr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 698c18bb1..44a880cfc 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -327,7 +327,7 @@ Verrouille la base de données lorsque la durée du presse-papier expire ou que la notification est fermée après avoir commencé à l’utiliser Corbeille Sélection de l’entrée - Lors de la sélection d'une entrée dans KeePassDX, rentre cette entrée disponible dans le Magiclavier + Lors de la sélection d'une entrée dans KeePassDX, rendre cette entrée disponible dans le Magiclavier Supprimer le mot de passe Supprime le mot de passe saisi après une tentative de connexion à une base de données Ouvrir le fichier From 9e5ce589ae440e7c62418989c78dd61818d8df4b Mon Sep 17 00:00:00 2001 From: Reza Almanda Date: Thu, 10 Jun 2021 01:32:04 +0000 Subject: [PATCH 07/13] Translated using Weblate (Indonesian) Currently translated at 74.8% (395 of 528 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/id/ --- app/src/main/res/values-id/strings.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 6b4a97edc..be672d4d3 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -384,4 +384,18 @@ Timbul galat saat mengunggah data berkas. File yang Anda unggah terlalu besar. Info sandi satu kali + Buka basisdata yang sudah ada + Simpan otomatis basisdata + Tambah item ke basisdata anda + Sunting entri + Buat berkas basisdata anda + Hapus kata sandi + Pengurutan item + Terima kasih banyak atas kontribusinya. + Dengan berkontribusi, + Kunci basisdata + Buka basisdata anda + Salin bidang + Atur OTP + Partisipasi \ No newline at end of file From 728b111ac9f70208d4618b316711dcb451d2b906 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 12 Jun 2021 10:31:18 +0200 Subject: [PATCH 08/13] Upgrade to 2.10.3 --- CHANGELOG | 3 +++ app/build.gradle | 4 ++-- fastlane/metadata/android/en-US/changelogs/81.txt | 1 + fastlane/metadata/android/fr-FR/changelogs/81.txt | 1 + 4 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/81.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/81.txt diff --git a/CHANGELOG b/CHANGELOG index 54f830cb2..a5e5e9092 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +KeePassDX(2.10.3) + * + KeePassDX(2.10.2) * Fix search fields references #987 * Fix Auto-Types with same key #997 diff --git a/app/build.gradle b/app/build.gradle index e6e466b5d..bc0a1c164 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId "com.kunzisoft.keepass" minSdkVersion 15 targetSdkVersion 30 - versionCode = 80 - versionName = "2.10.2" + versionCode = 81 + versionName = "2.10.3" multiDexEnabled true testApplicationId = "com.kunzisoft.keepass.tests" diff --git a/fastlane/metadata/android/en-US/changelogs/81.txt b/fastlane/metadata/android/en-US/changelogs/81.txt new file mode 100644 index 000000000..42780ecb1 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/81.txt @@ -0,0 +1 @@ + * \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/81.txt b/fastlane/metadata/android/fr-FR/changelogs/81.txt new file mode 100644 index 000000000..42780ecb1 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/81.txt @@ -0,0 +1 @@ + * \ No newline at end of file From b9b6d3d2cb60e064c58ac0bfce56ac07d66a27e9 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 12 Jun 2021 11:39:41 +0200 Subject: [PATCH 09/13] Fix database opened without notification (Database is now closed when screen is killed in background #1025) --- .../activities/FileDatabaseSelectActivity.kt | 4 +++ .../keepass/activities/PasswordActivity.kt | 2 +- .../java/com/kunzisoft/keepass/app/App.kt | 3 +-- .../database/action/CreateDatabaseRunnable.kt | 3 +-- .../database/action/LoadDatabaseRunnable.kt | 6 ++--- .../action/ProgressDatabaseTaskProvider.kt | 1 + .../database/action/ReloadDatabaseRunnable.kt | 4 +-- .../keepass/database/element/Database.kt | 5 ++-- .../DatabaseTaskNotificationService.kt | 25 ++++++++++++++++--- .../keepass/utils/BroadcastAction.kt | 2 +- 10 files changed, 38 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt index 02500c8ce..327f9542a 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt @@ -90,6 +90,10 @@ class FileDatabaseSelectActivity : SpecialModeActivity(), override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + // TODO To move after refactoring + if (DatabaseTaskNotificationService.isRunning(this)) + Database.getInstance().clearAndClose(this) + mFileDatabaseHistoryAction = FileDatabaseHistoryAction.getInstance(applicationContext) setContentView(R.layout.activity_file_selection) 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 e39089485..566238563 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt @@ -708,7 +708,7 @@ open class PasswordActivity : SpecialModeActivity(), AdvancedUnlockFragment.Buil when (resultCode) { LockingActivity.RESULT_EXIT_LOCK -> { clearCredentialsViews() - Database.getInstance().clearAndClose(UriUtil.getBinaryDir(this)) + Database.getInstance().clearAndClose(this) } Activity.RESULT_CANCELED -> { clearCredentialsViews() diff --git a/app/src/main/java/com/kunzisoft/keepass/app/App.kt b/app/src/main/java/com/kunzisoft/keepass/app/App.kt index ccfa97abd..dc906c04c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/app/App.kt +++ b/app/src/main/java/com/kunzisoft/keepass/app/App.kt @@ -22,7 +22,6 @@ package com.kunzisoft.keepass.app import androidx.multidex.MultiDexApplication import com.kunzisoft.keepass.activities.stylish.Stylish import com.kunzisoft.keepass.database.element.Database -import com.kunzisoft.keepass.utils.UriUtil class App : MultiDexApplication() { @@ -34,7 +33,7 @@ class App : MultiDexApplication() { } override fun onTerminate() { - Database.getInstance().clearAndClose(UriUtil.getBinaryDir(this)) + Database.getInstance().clearAndClose(this) super.onTerminate() } } diff --git a/app/src/main/java/com/kunzisoft/keepass/database/action/CreateDatabaseRunnable.kt b/app/src/main/java/com/kunzisoft/keepass/database/action/CreateDatabaseRunnable.kt index 0b55a1bb7..449cc87ad 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/action/CreateDatabaseRunnable.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/action/CreateDatabaseRunnable.kt @@ -26,7 +26,6 @@ import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction import com.kunzisoft.keepass.database.element.Database import com.kunzisoft.keepass.model.MainCredential import com.kunzisoft.keepass.settings.PreferencesUtil -import com.kunzisoft.keepass.utils.UriUtil class CreateDatabaseRunnable(context: Context, private val mDatabase: Database, @@ -44,7 +43,7 @@ class CreateDatabaseRunnable(context: Context, createData(mDatabaseUri, databaseName, rootName) } } catch (e: Exception) { - mDatabase.clearAndClose(UriUtil.getBinaryDir(context)) + mDatabase.clearAndClose(context) setError(e) } diff --git a/app/src/main/java/com/kunzisoft/keepass/database/action/LoadDatabaseRunnable.kt b/app/src/main/java/com/kunzisoft/keepass/database/action/LoadDatabaseRunnable.kt index 3b082822a..a5b2408ca 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/action/LoadDatabaseRunnable.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/action/LoadDatabaseRunnable.kt @@ -25,8 +25,8 @@ import com.kunzisoft.keepass.app.database.CipherDatabaseAction import com.kunzisoft.keepass.app.database.CipherDatabaseEntity import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction import com.kunzisoft.keepass.database.element.Database -import com.kunzisoft.keepass.database.element.binary.LoadedKey import com.kunzisoft.keepass.database.element.binary.BinaryData +import com.kunzisoft.keepass.database.element.binary.LoadedKey import com.kunzisoft.keepass.database.exception.LoadDatabaseException import com.kunzisoft.keepass.model.MainCredential import com.kunzisoft.keepass.settings.PreferencesUtil @@ -47,7 +47,7 @@ class LoadDatabaseRunnable(private val context: Context, override fun onStartRun() { // Clear before we load - mDatabase.clearAndClose(UriUtil.getBinaryDir(context)) + mDatabase.clearAndClose(context) } override fun onActionRun() { @@ -85,7 +85,7 @@ class LoadDatabaseRunnable(private val context: Context, // Register the current time to init the lock timer PreferencesUtil.saveCurrentTime(context) } else { - mDatabase.clearAndClose(UriUtil.getBinaryDir(context)) + mDatabase.clearAndClose(context) } } diff --git a/app/src/main/java/com/kunzisoft/keepass/database/action/ProgressDatabaseTaskProvider.kt b/app/src/main/java/com/kunzisoft/keepass/database/action/ProgressDatabaseTaskProvider.kt index 61caf5494..9cda9832f 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/action/ProgressDatabaseTaskProvider.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/action/ProgressDatabaseTaskProvider.kt @@ -23,6 +23,7 @@ import android.content.* import android.content.Context.BIND_ABOVE_CLIENT import android.content.Context.BIND_NOT_FOREGROUND import android.net.Uri +import android.os.Build import android.os.Bundle import android.os.IBinder import android.util.Log diff --git a/app/src/main/java/com/kunzisoft/keepass/database/action/ReloadDatabaseRunnable.kt b/app/src/main/java/com/kunzisoft/keepass/database/action/ReloadDatabaseRunnable.kt index 6075c9b78..7ee45188c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/action/ReloadDatabaseRunnable.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/action/ReloadDatabaseRunnable.kt @@ -21,8 +21,8 @@ package com.kunzisoft.keepass.database.action import android.content.Context import com.kunzisoft.keepass.database.element.Database -import com.kunzisoft.keepass.database.element.binary.LoadedKey import com.kunzisoft.keepass.database.element.binary.BinaryData +import com.kunzisoft.keepass.database.element.binary.LoadedKey import com.kunzisoft.keepass.database.exception.LoadDatabaseException import com.kunzisoft.keepass.settings.PreferencesUtil import com.kunzisoft.keepass.tasks.ActionRunnable @@ -62,7 +62,7 @@ class ReloadDatabaseRunnable(private val context: Context, PreferencesUtil.saveCurrentTime(context) } else { tempCipherKey = null - mDatabase.clearAndClose(UriUtil.getBinaryDir(context)) + mDatabase.clearAndClose(context) } } diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt index c9069bd40..843a0b017 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt @@ -20,6 +20,7 @@ package com.kunzisoft.keepass.database.element import android.content.ContentResolver +import android.content.Context import android.content.res.Resources import android.net.Uri import android.util.Log @@ -668,8 +669,8 @@ class Database { } } - fun clearAndClose(filesDirectory: File? = null) { - clear(filesDirectory) + fun clearAndClose(context: Context? = null) { + clear(context?.let { UriUtil.getBinaryDir(context) }) this.mDatabaseKDB = null this.mDatabaseKDBX = null this.fileUri = null diff --git a/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt b/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt index cf1bfb179..aba934e89 100644 --- a/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt @@ -19,7 +19,9 @@ */ package com.kunzisoft.keepass.services +import android.app.ActivityManager import android.app.PendingIntent +import android.content.Context import android.content.Intent import android.net.Uri import android.os.* @@ -44,10 +46,7 @@ import com.kunzisoft.keepass.model.SnapFileDatabaseInfo import com.kunzisoft.keepass.tasks.ActionRunnable import com.kunzisoft.keepass.tasks.ProgressTaskUpdater import com.kunzisoft.keepass.timeout.TimeoutHelper -import com.kunzisoft.keepass.utils.DATABASE_START_TASK_ACTION -import com.kunzisoft.keepass.utils.DATABASE_STOP_TASK_ACTION -import com.kunzisoft.keepass.utils.LOCK_ACTION -import com.kunzisoft.keepass.utils.closeDatabase +import com.kunzisoft.keepass.utils.* import com.kunzisoft.keepass.viewmodels.FileDatabaseInfo import kotlinx.coroutines.* import java.util.* @@ -840,6 +839,12 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress } } + override fun onDestroy() { + super.onDestroy() + if (mDatabase.loaded) + actionOnLock() + } + companion object { private val TAG = DatabaseTaskNotificationService::class.java.name @@ -935,6 +940,18 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress putParcelableArrayList(ENTRIES_ID_KEY, entriesId) } } + + fun isRunning(context: Context): Boolean { + // TODO remove by moving database instance in service + (context.getSystemService(ACTIVITY_SERVICE) as? ActivityManager?)?.let { manager -> + for (service in manager.getRunningServices(Int.MAX_VALUE)) { + if (DatabaseTaskNotificationService::class.java.name == service.service.className) { + return true + } + } + } + return false + } } } \ No newline at end of file diff --git a/app/src/main/java/com/kunzisoft/keepass/utils/BroadcastAction.kt b/app/src/main/java/com/kunzisoft/keepass/utils/BroadcastAction.kt index c12fb0838..88587dc33 100644 --- a/app/src/main/java/com/kunzisoft/keepass/utils/BroadcastAction.kt +++ b/app/src/main/java/com/kunzisoft/keepass/utils/BroadcastAction.kt @@ -138,5 +138,5 @@ fun Context.closeDatabase() { cancelAll() } // Clear data - Database.getInstance().clearAndClose(UriUtil.getBinaryDir(this)) + Database.getInstance().clearAndClose(this) } \ No newline at end of file From d35e31d12859f0dce22d25bf1e9cb2ed5d21d63a Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 12 Jun 2021 12:25:04 +0200 Subject: [PATCH 10/13] Fix biometric prompt #1018 --- .../com/kunzisoft/keepass/activities/PasswordActivity.kt | 5 +++++ 1 file changed, 5 insertions(+) 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 566238563..b35b9d712 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt @@ -462,6 +462,11 @@ open class PasswordActivity : SpecialModeActivity(), AdvancedUnlockFragment.Buil override fun onPause() { mProgressDatabaseTaskProvider?.unregisterProgressTask() + // To prevent biometric prompt to appearing outside of the app + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + advancedUnlockFragment?.disconnect(hideViews = false, closePrompt = true) + } + // Reinit locking activity UI variable LockingActivity.LOCKING_ACTIVITY_UI_VISIBLE_DURING_LOCK = null mAllowAutoOpenBiometricPrompt = true From d8cd84ed9ef53321218d7c8b0e2c4b2080dfbfa6 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sun, 13 Jun 2021 17:09:43 +0200 Subject: [PATCH 11/13] Remove special chars --- app/src/main/res/values-fr/strings.xml | 50 +++++++++++++------------- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 44a880cfc..925bb1b28 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -73,9 +73,9 @@ Mémoire insuffisante pour charger l’intégralité de votre base de données. Au moins un type de génération de mots de passe doit être sélectionné. Les mots de passe ne correspondent pas. - « Tours de transformation » trop grand. Définition à 2147483648. + \"Tours de transformation\" trop grand. Définition à 2147483648. Chaque chaîne doit avoir un nom de champ. - Veuillez saisir un entier positif dans le champ « Longueur ». + Veuillez saisir un entier positif dans le champ \"Longueur\". Impossible d’activer le service de remplissage automatique. Nom du champ Valeur du champ @@ -120,7 +120,7 @@ Installer un navigateur Web pour ouvrir cette URL. Ouvrir une base de données existante Ne pas rechercher dans les entrées sauvegardées - Omet les groupes « Sauvegarde » et « Corbeille » des résultats de recherche + Omet les groupes \"Sauvegarde\" et \"Corbeille\" des résultats de recherche Création d’une nouvelle base de données… Traitement en cours… Protection @@ -157,8 +157,8 @@ Majuscules Alerte Éviter les caractères en dehors du format de codage de caractères du fichier de base de données (les caractères non reconnus sont convertis en une même lettre). - Continuer sans protection de déverrouillage par mot de passe \? - Continuer sans clé de chiffrement \? + Continuer sans protection de déverrouillage par mot de passe \? + Continuer sans clé de chiffrement \? Version %1$s Aucune information d’identification biométrique ou de périphérique n’est enregistrée. Mot de passe chiffré stocké @@ -195,7 +195,7 @@ Affecter une clé principale Créer une nouvelle base de données Utilisation de la corbeille - Déplace les groupes et les entrées dans le groupe « Corbeille » avant leur suppression + Déplace les groupes et les entrées dans le groupe \"Corbeille\" avant leur suppression Fonte de caractères des champs Change la fonte utilisée dans les champs pour une meilleure visibilité des caractères Faire confiance au presse-papier @@ -280,7 +280,7 @@ Coller Annuler Autoriser l’absence de clé principale - Autorise l’appui du bouton « Ouvrir » si aucun identifiant n’est sélectionné + Autorise l’appui du bouton \"Ouvrir\" si aucun identifiant n’est sélectionné Protéger en écriture Modifiable Protégé en écriture @@ -288,8 +288,8 @@ Protégez en écriture votre base de données Changez le mode d’ouverture pour la session. \n -\n« Protégé en écriture » empêche les modifications involontaires de la base de données. -\n« Modifiable » vous permet d’ajouter, de supprimer ou de modifier tous les éléments comme vous le souhaitez. +\n\"Protégé en écriture\" empêche les modifications involontaires de la base de données. +\n\"Modifiable\" vous permet d’ajouter, de supprimer ou de modifier tous les éléments comme vous le souhaitez. Modifier l’entrée Impossible de charger votre base de données. Impossible de charger la clé. Veuillez essayer de diminuer l’utilisation mémoire de la fonction de dérivation de clé. @@ -315,19 +315,19 @@ Vibration des touches Son de pression des touches Changement de clavier - Écran d'authentification de la base de données - Revenir automatiquement au clavier précédent sur l’écran d'authentification de la base de données + Écran d\'authentification de la base de données + Revenir automatiquement au clavier précédent sur l’écran d\'authentification de la base de données Action de touche automatique - Revenir automatiquement au clavier précédent après avoir exécuté « Action de touche automatique » + Revenir automatiquement au clavier précédent après avoir exécuté \"Action de touche automatique\" Mode sélection Veuillez ne pas tuer l’application… - Appuyer sur « Retour » pour verrouiller + Appuyer sur \"Retour\" pour verrouiller Verrouille la base de données lorsque l’utilisateur clique sur le bouton retour de l’écran racine Suppression à la fermeture Verrouille la base de données lorsque la durée du presse-papier expire ou que la notification est fermée après avoir commencé à l’utiliser Corbeille Sélection de l’entrée - Lors de la sélection d'une entrée dans KeePassDX, rendre cette entrée disponible dans le Magiclavier + Lors de la sélection d\'une entrée dans KeePassDX, rendre cette entrée disponible dans le Magiclavier Supprimer le mot de passe Supprime le mot de passe saisi après une tentative de connexion à une base de données Ouvrir le fichier @@ -382,7 +382,7 @@ Paramètres de sécurité Paramètres de la clé maîtresse La base de données contient des doublons d’UUID. - Résoudre le problème en générant de nouveaux UUID pour les doublons et continuer \? + Résoudre le problème en générant de nouveaux UUID pour les doublons et continuer \? Base de données ouverte Copier les champs d’une entrée à l’aide du presse-papier de votre appareil Utiliser le déverrouillage avancé pour ouvrir plus facilement une base de données @@ -408,21 +408,21 @@ Enregistrer la base de données Vider la corbeille Exécution de la commande… - Supprimer définitivement les nœuds sélectionnés \? + Supprimer définitivement les nœuds sélectionnés \? Le magasin de clés n’est pas correctement initialisé. Groupe de la corbeille Enregistrement automatique de la base de données - Enregistre la base de données après chaque action importante (en mode « Modifiable ») + Enregistre la base de données après chaque action importante (en mode \"Modifiable\") Attachements Restaurer l’historique Effacer l’historique Action de touche automatique - Effectuer l'action de la touche « Go » automatiquement après avoir appuyé sur une touche « Champ » du clavier + Effectuer l\'action de la touche \"Go\" automatiquement après avoir appuyé sur une touche \"Champ\" du clavier Téléchargement %1$s Initialisation… En cours : %1$d%% Finalisation… - Terminé ! + Terminé ! Masquer les entrées expirées Les entrées expirées ne sont pas affichées Contact @@ -444,7 +444,7 @@ Impossible de créer le fichier de base de données. Ajouter une pièce jointe Abandonner - Abandonner les modifications \? + Abandonner les modifications \? Valider Suggérer automatiquement des résultats de recherche à partir du domaine Web ou de l’identifiant de l’application Recherche automatique @@ -459,7 +459,7 @@ Liste de blocage de domaine Web Liste de blocage qui empêche le remplissage automatique des applications Liste de blocage d’application - Lorsqu'une adresse web est partagée avec KeePassDX, filtrer automatiquement les entrées contenant le domaine + Lorsqu\'une adresse web est partagée avec KeePassDX, filtrer automatiquement les entrées contenant le domaine Rechercher les informations partagées Filtre Recherche des domaines Web avec des contraintes de sous-domaines @@ -469,7 +469,7 @@ Téléverser %1$s Téléverse une pièce-jointe à votre entrée pour enregistrer d’importantes données externes. Ajouter une pièce-jointe - Ajouter quand même le fichier \? + Ajouter quand même le fichier \? Téléverser ce fichier va remplacer celui en place. Une base de données KeePass est seulement censée contenir de petits fichiers utilitaires (tels que les fichiers clé PGP). \n @@ -493,7 +493,7 @@ Fermer la base de données Revient automatiquement au clavier précédent après le verrouillage de la base de données Verrouiller la base de données - Essayer d’enregistrer l'association entre une adresse web partagée à KeePassDX et l'entrée sélectionnée manuellement + Essayer d’enregistrer l\'association entre une adresse web partagée à KeePassDX et l\'entrée sélectionnée manuellement Enregistrer les infos partagées Notification Mise à jour de sécurité biométrique requise. @@ -547,7 +547,7 @@ Kibioctets Octets Le type OTP existant n\'est pas reconnu par ce formulaire, sa validation peut ne plus générer correctement le jeton. - Annulé ! + Annulé ! Customisé Standard Sélectionnez des thèmes clairs ou foncés @@ -570,4 +570,4 @@ Une erreur s\'est produite lors de l\'exécution d\'une action sur la base de données. Vous ne pouvez pas déplacer un groupe ici. Ce mot est réservé et ne peut pas être utilisé. - + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32568cb19..7e3f39186 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -566,4 +566,4 @@ Expired entries are not shown Show UUID Displays the UUID linked to an entry - + \ No newline at end of file From 4d92d6dc2b56cd0b284517485cb594ef257154ab Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sun, 13 Jun 2021 17:15:14 +0200 Subject: [PATCH 12/13] Update CHANGELOG --- CHANGELOG | 4 +++- fastlane/metadata/android/en-US/changelogs/81.txt | 4 +++- fastlane/metadata/android/fr-FR/changelogs/81.txt | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index a5e5e9092..bfcf54fab 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,7 @@ KeePassDX(2.10.3) - * + * Improve Magikeyboard options description #1022 #1023 (Thx @djibux) + * Fix database opened without notification (database is now closed when screen is killed in background #1025) + * Fix biometric prompt #1018 KeePassDX(2.10.2) * Fix search fields references #987 diff --git a/fastlane/metadata/android/en-US/changelogs/81.txt b/fastlane/metadata/android/en-US/changelogs/81.txt index 42780ecb1..b82bea9b3 100644 --- a/fastlane/metadata/android/en-US/changelogs/81.txt +++ b/fastlane/metadata/android/en-US/changelogs/81.txt @@ -1 +1,3 @@ - * \ No newline at end of file + * Improve Magikeyboard options description #1022 #1023 (Thx @djibux) + * Fix database opened without notification (database is now closed when screen is killed in background #1025) + * Fix biometric prompt #1018 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/81.txt b/fastlane/metadata/android/fr-FR/changelogs/81.txt index 42780ecb1..c63c8d069 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/81.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/81.txt @@ -1 +1,3 @@ - * \ No newline at end of file + * Amélioration de la description des options de Magikeyboard #1022 #1023 (Thx @djibux) + * Correction de l'ouverture de la base de données sans notification (la base est maintenant fermée lorsque l'écran est tuée en arrière-plan #1025) + * Correction de l'invite biométrique #1018 \ No newline at end of file From 9887b8142d20939d891094941f2075bdad0b2242 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sun, 13 Jun 2021 17:57:30 +0200 Subject: [PATCH 13/13] Fix service starting #1025 --- .../keepass/activities/FileDatabaseSelectActivity.kt | 4 ---- .../database/action/ProgressDatabaseTaskProvider.kt | 1 - .../services/DatabaseTaskNotificationService.kt | 12 ------------ 3 files changed, 17 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt index 327f9542a..02500c8ce 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt @@ -90,10 +90,6 @@ class FileDatabaseSelectActivity : SpecialModeActivity(), override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - // TODO To move after refactoring - if (DatabaseTaskNotificationService.isRunning(this)) - Database.getInstance().clearAndClose(this) - mFileDatabaseHistoryAction = FileDatabaseHistoryAction.getInstance(applicationContext) setContentView(R.layout.activity_file_selection) diff --git a/app/src/main/java/com/kunzisoft/keepass/database/action/ProgressDatabaseTaskProvider.kt b/app/src/main/java/com/kunzisoft/keepass/database/action/ProgressDatabaseTaskProvider.kt index 9cda9832f..8bf327e17 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/action/ProgressDatabaseTaskProvider.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/action/ProgressDatabaseTaskProvider.kt @@ -256,7 +256,6 @@ class ProgressDatabaseTaskProvider(private val activity: FragmentActivity) { private fun start(bundle: Bundle? = null, actionTask: String) { try { - activity.stopService(intentDatabaseTask) if (bundle != null) intentDatabaseTask.putExtras(bundle) intentDatabaseTask.action = actionTask diff --git a/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt b/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt index aba934e89..ec29c28c5 100644 --- a/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt @@ -940,18 +940,6 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress putParcelableArrayList(ENTRIES_ID_KEY, entriesId) } } - - fun isRunning(context: Context): Boolean { - // TODO remove by moving database instance in service - (context.getSystemService(ACTIVITY_SERVICE) as? ActivityManager?)?.let { manager -> - for (service in manager.getRunningServices(Int.MAX_VALUE)) { - if (DatabaseTaskNotificationService::class.java.name == service.service.className) { - return true - } - } - } - return false - } } } \ No newline at end of file