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