fix: Add toast error #2159

This commit is contained in:
J-Jamet
2025-09-14 13:17:49 +02:00
parent 2f9e1e4bf2
commit 672f1ca37d
46 changed files with 89 additions and 81 deletions

View File

@@ -84,6 +84,7 @@ import com.kunzisoft.keepass.database.element.node.Node
import com.kunzisoft.keepass.database.element.node.NodeId
import com.kunzisoft.keepass.database.element.node.NodeIdUUID
import com.kunzisoft.keepass.database.element.node.Type
import com.kunzisoft.keepass.database.exception.RegisterInReadOnlyDatabaseException
import com.kunzisoft.keepass.database.helper.SearchHelper
import com.kunzisoft.keepass.database.search.SearchParameters
import com.kunzisoft.keepass.education.GroupActivityEducation
@@ -116,6 +117,7 @@ import com.kunzisoft.keepass.view.applyWindowInsets
import com.kunzisoft.keepass.view.hideByFading
import com.kunzisoft.keepass.view.setTransparentNavigationBar
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
import com.kunzisoft.keepass.view.toastError
import com.kunzisoft.keepass.view.updateLockPaddingStart
import com.kunzisoft.keepass.viewmodels.GroupEditViewModel
import com.kunzisoft.keepass.viewmodels.GroupViewModel
@@ -1767,12 +1769,7 @@ class GroupActivity : DatabaseLockActivity(),
)
onLaunchActivitySpecialMode()
} else {
Toast.makeText(
activity.applicationContext,
R.string.autofill_read_only_save,
Toast.LENGTH_LONG
)
.show()
activity.toastError(RegisterInReadOnlyDatabaseException())
onCancelSpecialMode()
}
}
@@ -1884,10 +1881,7 @@ class GroupActivity : DatabaseLockActivity(),
}
)
} else {
Toast.makeText(activity.applicationContext,
R.string.autofill_read_only_save,
Toast.LENGTH_LONG)
.show()
activity.toastError(RegisterInReadOnlyDatabaseException())
onCancelSpecialMode()
}
},
@@ -1949,10 +1943,7 @@ class GroupActivity : DatabaseLockActivity(),
)
onLaunchActivitySpecialMode()
} else {
Toast.makeText(activity.applicationContext,
R.string.autofill_read_only_save,
Toast.LENGTH_LONG)
.show()
activity.toastError(RegisterInReadOnlyDatabaseException())
onCancelSpecialMode()
}
}

View File

@@ -576,9 +576,9 @@ class MainCredentialActivity : DatabaseModeActivity() {
mSpecialMode == SpecialMode.SAVE
|| mSpecialMode == SpecialMode.REGISTRATION)
) {
Log.e(TAG, getString(R.string.autofill_read_only_save))
Log.e(TAG, getString(R.string.error_save_read_only))
Snackbar.make(coordinatorLayout,
R.string.autofill_read_only_save,
R.string.error_save_read_only,
Snackbar.LENGTH_LONG).asError().show()
} else {
databaseFileUri?.let { databaseUri ->

View File

@@ -41,12 +41,14 @@ import com.kunzisoft.keepass.credentialprovider.autofill.AutofillHelper
import com.kunzisoft.keepass.credentialprovider.autofill.CompatInlineSuggestionsRequest
import com.kunzisoft.keepass.credentialprovider.autofill.KeeAutofillService
import com.kunzisoft.keepass.database.ContextualDatabase
import com.kunzisoft.keepass.database.exception.RegisterInReadOnlyDatabaseException
import com.kunzisoft.keepass.database.helper.SearchHelper
import com.kunzisoft.keepass.model.RegisterInfo
import com.kunzisoft.keepass.model.SearchInfo
import com.kunzisoft.keepass.utils.AppUtil
import com.kunzisoft.keepass.utils.getParcelableCompat
import com.kunzisoft.keepass.utils.getParcelableExtraCompat
import com.kunzisoft.keepass.view.toastError
@RequiresApi(api = Build.VERSION_CODES.O)
class AutofillLauncherActivity : DatabaseModeActivity() {
@@ -236,7 +238,7 @@ class AutofillLauncherActivity : DatabaseModeActivity() {
}
private fun showReadOnlySaveMessage() {
Toast.makeText(this.applicationContext, R.string.autofill_read_only_save, Toast.LENGTH_LONG).show()
toastError(RegisterInReadOnlyDatabaseException())
}
companion object {

View File

@@ -30,12 +30,14 @@ import com.kunzisoft.keepass.activities.GroupActivity
import com.kunzisoft.keepass.activities.legacy.DatabaseModeActivity
import com.kunzisoft.keepass.credentialprovider.magikeyboard.MagikeyboardService
import com.kunzisoft.keepass.database.ContextualDatabase
import com.kunzisoft.keepass.database.exception.RegisterInReadOnlyDatabaseException
import com.kunzisoft.keepass.database.helper.SearchHelper
import com.kunzisoft.keepass.model.SearchInfo
import com.kunzisoft.keepass.otp.OtpEntryFields
import com.kunzisoft.keepass.utils.AppUtil
import com.kunzisoft.keepass.utils.KeyboardUtil.isKeyboardActivatedInSettings
import com.kunzisoft.keepass.utils.getParcelableCompat
import com.kunzisoft.keepass.view.toastError
/**
* Activity to search or select entry in database,
@@ -138,10 +140,7 @@ class EntrySelectionLauncherActivity : DatabaseModeActivity() {
false
)
} else {
Toast.makeText(applicationContext,
R.string.autofill_read_only_save,
Toast.LENGTH_LONG)
.show()
toastError(RegisterInReadOnlyDatabaseException())
}
} else if (searchShareForMagikeyboard) {
MagikeyboardService.performSelection(
@@ -182,10 +181,7 @@ class EntrySelectionLauncherActivity : DatabaseModeActivity() {
false
)
} else {
Toast.makeText(applicationContext,
R.string.autofill_read_only_save,
Toast.LENGTH_LONG)
.show()
toastError(RegisterInReadOnlyDatabaseException())
}
} else if (searchShareForMagikeyboard) {
GroupActivity.launchForKeyboardSelectionResult(

View File

@@ -50,8 +50,11 @@ import com.kunzisoft.keepass.credentialprovider.passkey.data.PublicKeyCredential
import com.kunzisoft.keepass.credentialprovider.passkey.data.PublicKeyCredentialRequestOptions
import com.kunzisoft.keepass.database.ContextualDatabase
import com.kunzisoft.keepass.database.DatabaseTaskProvider
import com.kunzisoft.keepass.database.exception.RegisterInReadOnlyDatabaseException
import com.kunzisoft.keepass.database.helper.SearchHelper
import com.kunzisoft.keepass.model.SearchInfo
import com.kunzisoft.keepass.view.toastError
import java.io.IOException
import java.time.Instant
@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
@@ -218,18 +221,15 @@ class PasskeyProviderService : CredentialProviderService() {
) {
Log.d(javaClass.simpleName, "onBeginCreateCredentialRequest called")
try {
processCreateCredentialRequest(request)?.let { response ->
callback.onResult(response)
} ?: let {
callback.onError(CreateCredentialUnknownException())
}
callback.onResult(processCreateCredentialRequest(request))
} catch (e: Exception) {
Log.e(javaClass.simpleName, "onBeginCreateCredentialRequest error", e)
callback.onError(CreateCredentialUnknownException())
toastError(e)
callback.onError(CreateCredentialUnknownException(e.localizedMessage))
}
}
private fun processCreateCredentialRequest(request: BeginCreateCredentialRequest): BeginCreateCredentialResponse? {
private fun processCreateCredentialRequest(request: BeginCreateCredentialRequest): BeginCreateCredentialResponse {
when (request) {
is BeginCreatePublicKeyCredentialRequest -> {
// Request is passkey type
@@ -237,8 +237,7 @@ class PasskeyProviderService : CredentialProviderService() {
}
}
// request type not supported
Log.w(javaClass.simpleName, "unknown type of BeginCreateCredentialRequest")
return null
throw IOException("unknown type of BeginCreateCredentialRequest")
}
private fun MutableList<CreateEntry>.addPendingIntentCreationNewEntry(
@@ -279,9 +278,7 @@ class PasskeyProviderService : CredentialProviderService() {
searchInfo = searchInfo,
onItemsFound = { database, items ->
if (database.isReadOnly) {
throw CreateCredentialUnknownException(
"Unable to register or overwrite a passkey in a database that is read only"
)
throw RegisterInReadOnlyDatabaseException()
} else {
// To create a new entry
createEntries.addPendingIntentCreationNewEntry(accountName, searchInfo)
@@ -312,9 +309,7 @@ class PasskeyProviderService : CredentialProviderService() {
onItemNotFound = { database ->
// To create a new entry
if (database.isReadOnly) {
throw CreateCredentialUnknownException(
"Unable to register a new passkey in a database that is read only"
)
throw RegisterInReadOnlyDatabaseException()
} else {
createEntries.addPendingIntentCreationNewEntry(accountName, searchInfo)
}

View File

@@ -27,7 +27,6 @@ import com.kunzisoft.keepass.database.element.template.TemplateField
import com.kunzisoft.keepass.database.exception.CopyEntryDatabaseException
import com.kunzisoft.keepass.database.exception.CopyGroupDatabaseException
import com.kunzisoft.keepass.database.exception.CorruptedDatabaseException
import com.kunzisoft.keepass.database.exception.DatabaseException
import com.kunzisoft.keepass.database.exception.DatabaseInputException
import com.kunzisoft.keepass.database.exception.DatabaseOutputException
import com.kunzisoft.keepass.database.exception.DuplicateUuidDatabaseException
@@ -37,10 +36,12 @@ import com.kunzisoft.keepass.database.exception.HardwareKeyDatabaseException
import com.kunzisoft.keepass.database.exception.InvalidAlgorithmDatabaseException
import com.kunzisoft.keepass.database.exception.InvalidCredentialsDatabaseException
import com.kunzisoft.keepass.database.exception.KDFMemoryDatabaseException
import com.kunzisoft.keepass.database.exception.LocalizedException
import com.kunzisoft.keepass.database.exception.MergeDatabaseKDBException
import com.kunzisoft.keepass.database.exception.MoveEntryDatabaseException
import com.kunzisoft.keepass.database.exception.MoveGroupDatabaseException
import com.kunzisoft.keepass.database.exception.NoMemoryDatabaseException
import com.kunzisoft.keepass.database.exception.RegisterInReadOnlyDatabaseException
import com.kunzisoft.keepass.database.exception.SignatureDatabaseException
import com.kunzisoft.keepass.database.exception.UnknownDatabaseLocationException
import com.kunzisoft.keepass.database.exception.VersionDatabaseException
@@ -52,12 +53,13 @@ import com.kunzisoft.keepass.model.PasskeyEntryFields.FIELD_USERNAME
import com.kunzisoft.keepass.model.PasskeyEntryFields.FIELD_USER_HANDLE
import com.kunzisoft.keepass.model.PasskeyEntryFields.PASSKEY_FIELD
fun DatabaseException.getLocalizedMessage(resources: Resources): String? =
fun LocalizedException.getLocalizedMessage(resources: Resources): String? =
when (this) {
is FileNotFoundDatabaseException -> resources.getString(R.string.file_not_found_content)
is CorruptedDatabaseException -> resources.getString(R.string.corrupted_file)
is InvalidAlgorithmDatabaseException -> resources.getString(R.string.invalid_algorithm)
is UnknownDatabaseLocationException -> resources.getString(R.string.error_location_unknown)
is RegisterInReadOnlyDatabaseException -> resources.getString(R.string.error_save_read_only)
is HardwareKeyDatabaseException -> resources.getString(R.string.error_hardware_key_unsupported)
is EmptyKeyDatabaseException -> resources.getString(R.string.error_empty_key)
is SignatureDatabaseException -> resources.getString(R.string.invalid_db_sig)

View File

@@ -62,6 +62,7 @@ import androidx.core.view.updatePaddingRelative
import com.google.android.material.appbar.CollapsingToolbarLayout
import com.google.android.material.snackbar.Snackbar
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.exception.LocalizedException
import com.kunzisoft.keepass.database.helper.getLocalizedMessage
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.tasks.ActionRunnable
@@ -237,6 +238,17 @@ fun View.updateLockPaddingStart() {
}
}
fun Context.toastError(e: Throwable) {
Toast.makeText(
applicationContext,
if (e is LocalizedException)
e.getLocalizedMessage(resources)
else
e.localizedMessage,
Toast.LENGTH_LONG
).show()
}
fun Context.showActionErrorIfNeeded(result: ActionRunnable.Result) {
if (!result.isSuccess) {
result.exception?.getLocalizedMessage(resources)?.let { errorMessage ->

View File

@@ -493,7 +493,7 @@
<string name="regex">تعابير نمطية</string>
<string name="enable_keep_screen_on_title">أبقِ الشاشة شغّالة</string>
<string name="enable_education_screens_summary">أبرز العناصر لتعلم طريقة عمل التطبيق</string>
<string name="autofill_read_only_save">غير مسموح حفظ البيانات في قاعدة بيانات مفتوحة للقراءة فقط.</string>
<string name="error_save_read_only">غير مسموح حفظ البيانات في قاعدة بيانات مفتوحة للقراءة فقط.</string>
<string name="autofill_inline_suggestions_keyboard">أُضيف اقتراح ملء تلقائي.</string>
<string name="keyboard_previous_database_credentials_summary">الرجوع للوحة المفاتيح السابقة تلقائيًا في شاشة بيانات اعتماد قاعدة البيانات</string>
<string name="autofill_manual_selection_summary">اعرض خيارًا يسمح للمستخدم باختيار مدخلة من قاعدة البيانات</string>

View File

@@ -566,7 +566,7 @@
<string name="autofill_web_domain_blocklist_summary">Veb domenlərin avtomatik olaraq doldurulmasını əngəlləyən bloklama siyahısı</string>
<string name="autofill_block">Avtomatik doldurmanı blokla</string>
<string name="autofill_block_restart">Bloklamanı aktiv etmək üçün anketin daxil olduğu tətbiqi yenidən başladın.</string>
<string name="autofill_read_only_save">Yazma-qorumalı (dəyişməz) olaraq açılan məlumat bazasında yeni məlumatları yadda saxlamağa icazə verilmir.</string>
<string name="error_save_read_only">Yazma-qorumalı (dəyişməz) olaraq açılan məlumat bazasında yeni məlumatları yadda saxlamağa icazə verilmir.</string>
<string name="allow_no_password_summary">Əgər şəxsiyyəti təsdiq edən məlumatlar seçilməyibsə, \"Aç\" düyməsinin sıxılmasına icazə ver</string>
<string name="delete_entered_password_title">Şifrəni sil</string>
<string name="delete_entered_password_summary">Məlumat bazasına bağlantı cəhdindən sonra daxil edilmiş şifrəni sil</string>

View File

@@ -549,7 +549,7 @@
<string name="autofill_web_domain_blocklist_summary">Чорны спіс, які перашкаджае аўтазапаўненню вэб-даменаў</string>
<string name="autofill_block">Заблакаваць аўтазапаўненне</string>
<string name="autofill_block_restart">Перазапусціце праграму, якая змяшчае форму, каб актываваць блакаванне.</string>
<string name="autofill_read_only_save">Захаванне дадзеных недапушчальна для базы дадзеных, адкрытай толькі для чытання.</string>
<string name="error_save_read_only">Захаванне дадзеных недапушчальна для базы дадзеных, адкрытай толькі для чытання.</string>
<string name="autofill_inline_suggestions_keyboard">Прапановы аўтазапаўнення дададзены.</string>
<string name="allow_no_password_title">Дазволіць без галоўнага ключа</string>
<string name="allow_no_password_summary">Дазваляе націснуць кнопку Адкрыць, калі не выбраны ўліковыя дадзеныя</string>

View File

@@ -571,7 +571,7 @@
<string name="error_start_database_action">Възникна грешка при извършване на действие с хранилището.</string>
<string name="keyboard_entry_timeout_title">Време за изчакване</string>
<string name="autofill_application_id_blocklist_title">Черен списък на приложения</string>
<string name="autofill_read_only_save">В хранилище, отворено само за четене не могат да бъдат запазвани промени.</string>
<string name="error_save_read_only">В хранилище, отворено само за четене не могат да бъдат запазвани промени.</string>
<string name="error_move_group_here">Група не може да бъде преместена тук.</string>
<string name="keyboard_notification_entry_clear_close_title">Изчистване при затваряне</string>
<string name="autofill_save_search_info_summary">При ръчен избор на запис прави опит за запазване на информация от търсене за по-лесно бъдещо използване</string>

View File

@@ -643,7 +643,7 @@
<string name="keyboard_previous_lock_summary">Torna automàticament al teclat anterior després de bloquejar la base de dades</string>
<string name="select_entry">Selecciona una entrada</string>
<string name="autofill_ask_to_save_data_summary">Demana desar les dades quan es completi l\'emplenament d\'un formulari</string>
<string name="autofill_read_only_save">No es permet desar dades en una base de dades oberta en mode només de lectura.</string>
<string name="error_save_read_only">No es permet desar dades en una base de dades oberta en mode només de lectura.</string>
<string name="reset_education_screens_summary">Torna a mostrar tota la informació educativa</string>
<string name="reset_education_screens_text">Reinicialitza els consells educatius</string>
<string name="education_select_database_title">Obre una base de dades existent</string>

View File

@@ -465,7 +465,7 @@
<string name="education_add_attachment_summary">Nahrát přílohu k záznamu pro uložení důležitých externích dat.</string>
<string name="show_uuid_summary">Ukáže UUID propojené se záznamem nebo skupinou</string>
<string name="show_uuid_title">Ukázat UUID</string>
<string name="autofill_read_only_save">Uložení dat není povoleno, je-li databáze v režimu pouze pro čtení.</string>
<string name="error_save_read_only">Uložení dat není povoleno, je-li databáze v režimu pouze pro čtení.</string>
<string name="autofill_ask_to_save_data_summary">Po dokončení vyplnění formuláře se tázat na uložení dat</string>
<string name="autofill_ask_to_save_data_title">Tázat se před uložením</string>
<string name="autofill_save_search_info_summary">Pokusit se uložit údaje hledání pro příští použití, vybíráte-li záznam manuálně</string>

View File

@@ -451,7 +451,7 @@
<string name="show_uuid_title">Vis UUID</string>
<string name="upload_attachment">Overfør %1$s</string>
<string name="education_add_attachment_title">Vedhæft fil</string>
<string name="autofill_read_only_save">Det er ikke tilladt at gemme data i en database, der er åbnet som skrivebeskyttet.</string>
<string name="error_save_read_only">Det er ikke tilladt at gemme data i en database, der er åbnet som skrivebeskyttet.</string>
<string name="autofill_ask_to_save_data_summary">Spørg om du vil gemme data, når en formular er udfyldt</string>
<string name="autofill_ask_to_save_data_title">Spørg om du vil gemme data</string>
<string name="autofill_save_search_info_title">Gem søgeoplysninger</string>

View File

@@ -479,7 +479,7 @@
<string name="warning_sure_add_file">Datei trotzdem hinzufügen\?</string>
<string name="show_uuid_summary">Zeigt die mit einem Eintrag oder einer Gruppe verknüpfte UUID an</string>
<string name="show_uuid_title">UUID anzeigen</string>
<string name="autofill_read_only_save">Das Speichern von Daten ist bei einer schreibgeschützt geöffneten Datenbank nicht möglich.</string>
<string name="error_save_read_only">Das Speichern von Daten ist bei einer schreibgeschützt geöffneten Datenbank nicht möglich.</string>
<string name="autofill_close_database_title">Datenbank schließen</string>
<string name="keyboard_previous_lock_summary">Nach dem Sperren der Datenbank automatisch zur vorherigen Tastatur wechseln</string>
<string name="keyboard_previous_lock_title">Datenbank sperren</string>

View File

@@ -464,7 +464,7 @@
<string name="content_description_add_item">Προσθήκη είδους</string>
<string name="show_uuid_summary">Εμφανίζει το UUID που είναι συνδεδεμένο σε μια καταχώρηση ή σε μια ομάδα</string>
<string name="show_uuid_title">Εμφάνιση UUID</string>
<string name="autofill_read_only_save">Δεν επιτρέπεται η αποθήκευση δεδομένων για μια βάση δεδομένων που ανοίγει ως μόνο για ανάγνωση.</string>
<string name="error_save_read_only">Δεν επιτρέπεται η αποθήκευση δεδομένων για μια βάση δεδομένων που ανοίγει ως μόνο για ανάγνωση.</string>
<string name="autofill_ask_to_save_data_summary">Ζητήστε αποθήκευση δεδομένων όταν ολοκληρωθεί η συμπλήρωση μιας φόρμας</string>
<string name="autofill_ask_to_save_data_title">Ζητήστε να αποθηκεύσετε δεδομένα</string>
<string name="autofill_save_search_info_summary">Προσπαθήστε να αποθηκεύσετε πληροφορίες αναζήτησης όταν κάνετε μια χειροκίνητη επιλογή καταχώρησης για ευκολότερες μελλοντικές χρήσεις</string>

View File

@@ -473,7 +473,7 @@
<string name="education_setup_OTP_title">Establecer contraseña de un solo uso</string>
<string name="education_device_unlock_summary">Vincule su contraseña con su credencial biométrica o del dispositivo escaneada para desbloquear rápidamente su base de datos.</string>
<string name="education_device_unlock_title">Desbloqueo de la base de datos de los dispositivos</string>
<string name="autofill_read_only_save">No se permite guardar datos en una base de datos abierta como de solo lectura.</string>
<string name="error_save_read_only">No se permite guardar datos en una base de datos abierta como de solo lectura.</string>
<string name="autofill_block_restart">Reinicia la aplicación que contiene el formulario para activar el bloqueo.</string>
<string name="autofill_web_domain_blocklist_summary">Lista de dominios web en los que se impide el autocompletado</string>
<string name="autofill_web_domain_blocklist_title">Lista de bloqueo de dominios web</string>

View File

@@ -528,7 +528,7 @@
<string name="autofill_application_id_blocklist_title">Keelatud rakenduste loend</string>
<string name="autofill_block_restart">Keelamise jõustamiseks käivita antud sisendvormiga rakendus uuesti.</string>
<string name="autofill_inline_suggestions_keyboard">Automaattäite soovitused on lisatud.</string>
<string name="autofill_read_only_save">Kui andmebaas on avatud ainult lugemiseks, siis andmete salvestamine pole võimalik.</string>
<string name="error_save_read_only">Kui andmebaas on avatud ainult lugemiseks, siis andmete salvestamine pole võimalik.</string>
<string name="delete_entered_password_summary">Kustutab salasõna, mis oli kasutusel andmebaasiga ühenduse loomise ajal</string>
<string name="enable_screenshot_mode_summary">Luba teistel rakendusel teha sellest rakendusest ekraanitõmmist või salvestada tema ekraanivaadet</string>
<string name="autofill_close_database_title">Sulge andmebaas</string>

View File

@@ -273,7 +273,7 @@
<string name="autofill_inline_suggestions_title">Lerroko iradokizuna</string>
<string name="autofill_manual_selection_title">Eskuzko hautatzea</string>
<string name="autofill_inline_suggestions_summary">Betetze automatikorako gomendioak erakusten saiatzen da teklatu bateragarri baten bidez</string>
<string name="autofill_read_only_save">Ezin dira datuak gorde irakurketarako soilik irekitako datu-base batean.</string>
<string name="error_save_read_only">Ezin dira datuak gorde irakurketarako soilik irekitako datu-base batean.</string>
<string name="autofill_block_restart">Berrabiarazi formularioa duen aplikazioa blokeoa aktibatzeko.</string>
<string name="delete_entered_password_title">Ezabatu pasahitza</string>
<string name="allow_no_password_summary">Baimendu \"Ireki\" botoia sakatzea kredentzialak hautatu gabe</string>

View File

@@ -481,7 +481,7 @@
<string name="data">Données</string>
<string name="show_uuid_summary">Affiche lUUID lié à une entrée ou un groupe</string>
<string name="show_uuid_title">Afficher lUUID</string>
<string name="autofill_read_only_save">Lenregistrement des données nest pas autorisé pour une base de données ouverte en lecture seule.</string>
<string name="error_save_read_only">Lenregistrement des données nest pas autorisé pour une base de données ouverte en lecture seule.</string>
<string name="autofill_ask_to_save_data_summary">Demande de sauvegarde des données à la fin du remplissage d\'un formulaire</string>
<string name="autofill_ask_to_save_data_title">Demander à enregistrer des données</string>
<string name="autofill_save_search_info_summary">Essaye denregistrer les informations de recherche lors de la sélection manuelle dune entrée pour faciliter les utilisations futures</string>

View File

@@ -546,7 +546,7 @@
<string name="keyboard_selection_entry_summary">Ao ver unha entrada en KeePassDX, completar con esta o Magikeyboard</string>
<string name="keyboard_previous_lock_summary">Mudar automaticamente ao teclado previo despois de bloquear a base de datos</string>
<string name="autofill_ask_to_save_data_title">Pedir para gardar datos</string>
<string name="autofill_read_only_save">Non é posíbel gardar nunha base datos aberta en modo só lectura.</string>
<string name="error_save_read_only">Non é posíbel gardar nunha base datos aberta en modo só lectura.</string>
<string name="autofill_ask_to_save_data_summary">Pedir para gardar datos cando terminar de autocompletar un formulario</string>
<string name="delete_entered_password_summary">Borrar o contrasinal introducido após un intento de conexión a unha base de datos</string>
<string name="reset_education_screens_title">Restabelecer suxestións educativas</string>

View File

@@ -461,7 +461,7 @@
<string name="autofill_save_search_info_summary">Pokušaj spremiti podatke prilikom odabira ručnog unosa za jednostavniju buduću upotrebu</string>
<string name="notification">Obavijest</string>
<string name="error_registration_read_only">Nije dopušteno spremati novi element u zaštićenoj bazi podataka.</string>
<string name="autofill_read_only_save">Spremanje podataka nije dopušteno za bazu podataka koja je otvorena u zaštićenom stanju.</string>
<string name="error_save_read_only">Spremanje podataka nije dopušteno za bazu podataka koja je otvorena u zaštićenom stanju.</string>
<string name="show_uuid_summary">Prikazuje UUID povezan s unosom ili grupom</string>
<string name="show_uuid_title">Prikaži UUID</string>
<string name="autofill_ask_to_save_data_summary">Zatraži spremanje podataka kad se obrazac ispuni</string>

View File

@@ -564,7 +564,7 @@
<string name="autofill_web_domain_blocklist_summary">Tiltólista, amely megakadályozza a webes domainek automatikus kitöltését</string>
<string name="autofill_block">Automatikus kitöltés letiltása</string>
<string name="autofill_block_restart">Indítsa újra az űrlapot tartalmazó alkalmazást a tiltás aktiválásához.</string>
<string name="autofill_read_only_save">Az adatmentés nem engedélyezett, mert az adatbázis írásvédettként van megnyitva.</string>
<string name="error_save_read_only">Az adatmentés nem engedélyezett, mert az adatbázis írásvédettként van megnyitva.</string>
<string name="autofill_inline_suggestions_keyboard">Automatikus kitöltési javaslatok hozzáadva.</string>
<string name="education_add_attachment_summary">Töltsön fel egy mellékletet a bejegyzéséhez, hogy mentse a fontos külső adatokat.</string>
<string name="download_canceled">Megszakítva!</string>

View File

@@ -549,7 +549,7 @@
<string name="keyboard_previous_fill_in_summary">Secara otomatis beralih kembali ke keyboard sebelumnya setelah menjalankan \"Tindakan tombol otomatis\"</string>
<string name="keyboard_previous_database_credentials_summary">Secara otomatis beralih kembali ke keyboard sebelumnya di layar kredensial basis data</string>
<string name="autofill_manual_selection_summary">Tampilkan opsi untuk memungkinkan pengguna memilih entri basis data</string>
<string name="autofill_read_only_save">Penyimpanan data tidak diperbolehkan untuk basis data yang dibuka sebagai baca-saja.</string>
<string name="error_save_read_only">Penyimpanan data tidak diperbolehkan untuk basis data yang dibuka sebagai baca-saja.</string>
<string name="allow_no_password_title">Izinkan tidak ada kunci utama</string>
<string name="allow_no_password_summary">Memungkinkan mengetuk tombol \"Buka\" jika tidak ada kredensial yang dipilih</string>
<string name="delete_entered_password_summary">Menghapus kata sandi yang dimasukkan setelah upaya koneksi ke basis data</string>

View File

@@ -467,7 +467,7 @@
<string name="content_description_credentials_information">Info credenziali</string>
<string name="show_uuid_summary">Visualizza l\'UUID collegato a una voce o a un gruppo</string>
<string name="show_uuid_title">Mostra UUID</string>
<string name="autofill_read_only_save">Il salvataggio dei dati non è consentito per un database aperto in sola lettura.</string>
<string name="error_save_read_only">Il salvataggio dei dati non è consentito per un database aperto in sola lettura.</string>
<string name="autofill_ask_to_save_data_summary">Chiedi di salvare i dati quando l\'immissione dei dati in un form viene completata</string>
<string name="autofill_ask_to_save_data_title">Chiedi di salvare i dati</string>
<string name="autofill_save_search_info_summary">Provare a salvare le informazioni di ricerca quando viene selezionato manualmente un elemento per facilitarne gli utilizzi futuri</string>

View File

@@ -505,7 +505,7 @@
<string name="upload_attachment">העלה %1$s</string>
<string name="download_canceled">בוטל!</string>
<string name="unit_byte">B</string>
<string name="autofill_read_only_save">שמירת נתונים אינה מורשת עבור מסד נתונים שנפתח לקריאה בלבד.</string>
<string name="error_save_read_only">שמירת נתונים אינה מורשת עבור מסד נתונים שנפתח לקריאה בלבד.</string>
<string name="enter">Enter</string>
<string name="autofill_block">חסום מילוי אוטומטי</string>
<string name="warning_replace_file">העלאת קובץ זה תחליף את הקובץ הקיים.</string>

View File

@@ -472,7 +472,7 @@
<string name="hide_expired_entries_summary">有効期限切れのエントリーは非表示になります</string>
<string name="show_uuid_title">UUID を表示</string>
<string name="show_uuid_summary">エントリーやグループにリンクされた UUID を表示します</string>
<string name="autofill_read_only_save">データの保存は読み取り専用として開かれたデータベースでは許可されていません。</string>
<string name="error_save_read_only">データの保存は読み取り専用として開かれたデータベースでは許可されていません。</string>
<string name="save_mode">保存モード</string>
<string name="search_mode">検索モード</string>
<string name="error_field_name_already_exists">フィールド名はすでに存在します。</string>

View File

@@ -427,7 +427,7 @@
<string name="autofill_save_search_info_summary">Prøv å lagre søkeinformasjon når du velger manuell inntasting for enklere fremtidig bruk</string>
<string name="autofill_block">Blokker autofyll</string>
<string name="autofill_block_restart">Start appen på nytt som inneholder skjemaet for å aktivere blokkeringen.</string>
<string name="autofill_read_only_save">Datalagring er ikke tillatt for en database som er skrivebeskyttet.</string>
<string name="error_save_read_only">Datalagring er ikke tillatt for en database som er skrivebeskyttet.</string>
<string name="autofill_inline_suggestions_keyboard">Forslag til autofyll er lagt til.</string>
<string name="education_device_unlock_summary">Koble passordet ditt til den skannede biometriske eller enhetslegitimasjonen for å raskt låse opp databasen din.</string>
<string name="education_setup_OTP_title">Sett opp OTP</string>

View File

@@ -466,7 +466,7 @@
<string name="database_data_remove_unlinked_attachments_summary">Verwijdert bijlagen die in de database staan, maar niet aan een item zijn gekoppeld</string>
<string name="show_uuid_summary">Toont de UUID die is gekoppeld aan een item of een groep</string>
<string name="show_uuid_title">UUID tonen</string>
<string name="autofill_read_only_save">Het opslaan van gegevens is niet toegestaan voor een database die is geopend als alleen-lezen.</string>
<string name="error_save_read_only">Het opslaan van gegevens is niet toegestaan voor een database die is geopend als alleen-lezen.</string>
<string name="autofill_ask_to_save_data_summary">Vraag om gegevens op te slaan wanneer het invullen van een formulier is voltooid</string>
<string name="autofill_ask_to_save_data_title">Vragen om gegevens op te slaan</string>
<string name="autofill_save_search_info_summary">Probeer zoekinformatie op te slaan bij het maken van een handmatige invoerselectie voor eenvoudiger toekomstig gebruik</string>

View File

@@ -463,7 +463,7 @@
<string name="content_description_credentials_information">Informacje o poświadczeniach</string>
<string name="show_uuid_summary">Wyświetla identyfikator UUID powiązany z wpisem lub grupą</string>
<string name="show_uuid_title">Pokaż UUID</string>
<string name="autofill_read_only_save">Zapisywanie danych nie jest dozwolone dla bazy danych otwartej tylko do odczytu.</string>
<string name="error_save_read_only">Zapisywanie danych nie jest dozwolone dla bazy danych otwartej tylko do odczytu.</string>
<string name="autofill_ask_to_save_data_summary">Pytaj o zapisanie danych po zakończeniu wypełniania formularza</string>
<string name="autofill_ask_to_save_data_title">Pytaj o zapisanie danych</string>
<string name="autofill_save_search_info_summary">Staraj się zapisywać informacje wyszukiwania podczas dokonywania ręcznego wyboru wpisu, aby ułatwić sobie przyszłe użycie</string>

View File

@@ -550,7 +550,7 @@
<string name="education_device_unlock_summary">Vincule sua senha à credencial biométrica ou do dispositivo digitalizada para desbloquear rapidamente seu banco de dados.</string>
<string name="education_device_unlock_title">Desbloqueio do banco de dados do dispositivo</string>
<string name="autofill_inline_suggestions_keyboard">Sugestões de preenchimento automático adicionadas.</string>
<string name="autofill_read_only_save">A salvação de dados não é permitida para um banco de dados aberto apenas como leitura.</string>
<string name="error_save_read_only">A salvação de dados não é permitida para um banco de dados aberto apenas como leitura.</string>
<string name="autofill_ask_to_save_data_summary">Pedir para salvar dados ao terminar de preencher um formulário</string>
<string name="autofill_ask_to_save_data_title">Perguntar para salvar dados</string>
<string name="autofill_save_search_info_summary">Tente salvar informações de pesquisa ao fazer uma seleção manual de entrada para facilitar usos posteriores</string>

View File

@@ -503,7 +503,7 @@
<string name="education_device_unlock_summary">Ligue a sua palavra-passe às suas credenciais biométricas ou do dispositivo para desbloquear rapidamente a sua base de dados.</string>
<string name="education_device_unlock_title">Desbloqueio da base de dados do dispositivo</string>
<string name="autofill_inline_suggestions_keyboard">Adicionadas sugestões de preenchimento automático.</string>
<string name="autofill_read_only_save">Não é possível guardar dados numa base de dados aberta apenas com permissão de leitura.</string>
<string name="error_save_read_only">Não é possível guardar dados numa base de dados aberta apenas com permissão de leitura.</string>
<string name="autofill_ask_to_save_data_summary">Pedir para guardar dados quando terminar de preencher um formulário</string>
<string name="autofill_ask_to_save_data_title">Pedir para guardar dados</string>
<string name="autofill_save_search_info_summary">Tentar guardar as informações de pesquisas ao fazer uma seleção de entrada manual para facilitar utilizações posteriores</string>

View File

@@ -484,7 +484,7 @@
<string name="download_canceled">Cancelado!</string>
<string name="education_device_unlock_title">Desbloqueio da base de dados do dispositivo</string>
<string name="autofill_inline_suggestions_keyboard">Adicionadas sugestões de preenchimento automático.</string>
<string name="autofill_read_only_save">Não é possível guardar dados numa base de dados aberta apenas com permissão de leitura.</string>
<string name="error_save_read_only">Não é possível guardar dados numa base de dados aberta apenas com permissão de leitura.</string>
<string name="autofill_ask_to_save_data_summary">Pedir para guardar dados quando terminar de preencher um formulário</string>
<string name="autofill_ask_to_save_data_title">Pedir para guardar dados</string>
<string name="autofill_save_search_info_summary">Tentar guardar as informações de pesquisas ao fazer uma seleção de entrada manual para facilitar utilizações posteriores</string>

View File

@@ -661,7 +661,7 @@
<string name="autofill_inline_suggestions_title">Sugestii în linie</string>
<string name="autofill_ask_to_save_data_summary">Solicitați salvarea datelor atunci când se finalizează completarea unui formular</string>
<string name="autofill_block_restart">Reporniți aplicația care conține formularul pentru a activa blocarea.</string>
<string name="autofill_read_only_save">Salvarea datelor nu este permisă pentru o bază de date deschisă ca fiind doar pentru citire.</string>
<string name="error_save_read_only">Salvarea datelor nu este permisă pentru o bază de date deschisă ca fiind doar pentru citire.</string>
<string name="education_validate_entry_summary">Nu uitați să validați datele introduse și să salvați baza de date.
\n
\nDacă este activată o blocare automată și uitați că ați făcut o modificare, riscați să vă pierdeți datele.</string>

View File

@@ -471,7 +471,7 @@
<string name="keyboard_previous_lock_summary">Автоматически переключаться на предыдущую клавиатуру после блокировки базы</string>
<string name="show_uuid_summary">Показывать UUID, связанный с записью или группой</string>
<string name="show_uuid_title">Показывать UUID</string>
<string name="autofill_read_only_save">Сохранение данных невозможно для базы, открытой только для чтения.</string>
<string name="error_save_read_only">Сохранение данных невозможно для базы, открытой только для чтения.</string>
<string name="autofill_ask_to_save_data_summary">Запрашивать сохранение данных после завершения заполнения формы</string>
<string name="autofill_ask_to_save_data_title">Запрос сохранения данных</string>
<string name="autofill_close_database_summary">Закрывать базу после выбора автозаполнения</string>

View File

@@ -303,7 +303,7 @@
<string name="autofill_save_search_info_summary">Pokúste sa uložiť informácie o vyhľadávaní pri ručnom výbere pre jednoduchšie budúce použitie</string>
<string name="autofill_ask_to_save_data_title">Požiadajte o uloženie údajov</string>
<string name="autofill_ask_to_save_data_summary">Po vyplnení formulára požiadajte o uloženie údajov</string>
<string name="autofill_read_only_save">Ukladanie údajov nie je povolené pre databázu otvorenú len na čítanie.</string>
<string name="error_save_read_only">Ukladanie údajov nie je povolené pre databázu otvorenú len na čítanie.</string>
<string name="autofill_inline_suggestions_keyboard">Boli pridané návrhy automatického dopĺňania.</string>
<string name="education_new_node_title">Pridajte položky do databázy</string>
<string name="education_device_unlock_title">Odomykanie databázy zariadenia</string>

View File

@@ -607,7 +607,7 @@
<string name="keyboard_previous_database_credentials_summary">Kthehu automatikisht te tastiera e mëparshme, te skena e kredencialeve për bazën e të dhënave</string>
<string name="autofill_manual_selection_summary">Shfaq mundësi për ta lënë përdoruesin të përzgjedhë zë baze të dhënash</string>
<string name="autofill_save_search_info_summary">Provo të ruash informacion, kur bëhet një përzgjedhje dorazi e zërit, për përdorim më të kollajtë në të ardhmen</string>
<string name="autofill_read_only_save">Slejohet ruajtje të dhënash për një bazë të dhënash të hapur vetëm-për-lexim.</string>
<string name="error_save_read_only">Slejohet ruajtje të dhënash për një bazë të dhënash të hapur vetëm-për-lexim.</string>
<string name="enable_auto_save_database_summary">Ruaje bazën e të dhënave pas çdo veprimi të rëndësishëm (nën mënyrën “E ndryshueshme”)</string>
<string name="enable_keep_screen_on_summary">Mbaje hapur ekranin, kur shihet ose përpunohet një zë</string>
<string name="enable_screenshot_mode_summary">Lejo aplikacione palësh të treta të regjistrojnë, ose bëjnë foto ekrani të aplikacionit</string>

View File

@@ -644,7 +644,7 @@
<string name="autofill_application_id_blocklist_title">பயன்பாட்டு பிளாக்லிச்ட்</string>
<string name="autofill_application_id_blocklist_summary">பயன்பாடுகளை தானாக நிரப்புவதைத் தடுக்கும் பிளாக்லிச்ட்</string>
<string name="autofill_web_domain_blocklist_summary">வலை களங்களை தானாக நிரப்புவதைத் தடுக்கும் பிளாக்லிச்ட்</string>
<string name="autofill_read_only_save">படிக்க மட்டும் திறக்கப்பட்ட தரவுத்தளத்திற்கு தரவு சேமிப்பு அனுமதிக்கப்படவில்லை.</string>
<string name="error_save_read_only">படிக்க மட்டும் திறக்கப்பட்ட தரவுத்தளத்திற்கு தரவு சேமிப்பு அனுமதிக்கப்படவில்லை.</string>
<string name="autofill_inline_suggestions_keyboard">ஆட்டோஃபில் பரிந்துரைகள் சேர்க்கப்பட்டன.</string>
<string name="education_new_node_summary">உங்கள் டிசிட்டல் அடையாளங்களை நிர்வகிக்க உள்ளீடுகள் உதவுகின்றன.\n\n குழுக்கள் (~ கோப்புறைகள்) உங்கள் தரவுத்தளத்தில் உள்ளீடுகளை ஒழுங்கமைக்கின்றன.</string>
<string name="education_search_title">உள்ளீடுகள் மூலம் தேடுங்கள்</string>

View File

@@ -612,7 +612,7 @@
<string name="autofill_application_id_blocklist_summary">รายการที่บล็อกเพื่อกันไม่ให้กรอกข้อมูลในแอปอัตโนมัติ</string>
<string name="autofill_web_domain_blocklist_summary">รายการที่บล็อกเพื่อกันไม่ให้กรอกข้อมูลในเว็บอัตโนมัติ</string>
<string name="biometric_delete_all_key_summary">ลบกุญแจเข้ารหัสทั้งหมดที่เกี่ยวข้องกับการปลดล็อกด้วยอุปกรณ์</string>
<string name="autofill_read_only_save">การบันทึกฐานข้อมูลไม่อนุญาตสำหรับฐานข้อมูลที่อ่านอย่างเดียว</string>
<string name="error_save_read_only">การบันทึกฐานข้อมูลไม่อนุญาตสำหรับฐานข้อมูลที่อ่านอย่างเดียว</string>
<string name="autofill_block_restart">เปิดแอปที่แบบฟอร์มนั้นขั้นมาใหม่เพื่อใช้งานการบล็อก</string>
<string name="autofill_inline_suggestions_keyboard">เพื่มการแนะนำการกรอกอัตโนมัติ</string>
<string name="allow_no_password_title">อนุญาตให้ไม่มีรหัสผ่านหลัก</string>

View File

@@ -458,7 +458,7 @@
<string name="database_data_remove_unlinked_attachments_summary">Veri tabanında bulunan ancak bir girdiye bağlı olmayan ekleri kaldırır</string>
<string name="show_uuid_summary">Bir girdiye veya gruba bağlı UUID\'yi görüntüler</string>
<string name="show_uuid_title">UUID\'yi göster</string>
<string name="autofill_read_only_save">Salt okunur olarak açılan bir veri tabanı için veri kaydına izin verilmiyor.</string>
<string name="error_save_read_only">Salt okunur olarak açılan bir veri tabanı için veri kaydına izin verilmiyor.</string>
<string name="autofill_ask_to_save_data_summary">Form doldurma işlemi tamamlandığında verileri kaydetmek için sor</string>
<string name="autofill_ask_to_save_data_title">Verileri kaydetmek için sor</string>
<string name="autofill_save_search_info_summary">Gelecekteki daha kolay kullanımlar için el ile giriş seçimi yaparken arama bilgilerini kaydetmeyi deneyin</string>

View File

@@ -464,7 +464,7 @@
<string name="database_data_remove_unlinked_attachments_summary">Вилучає вкладення, що містяться в базі даних, але не пов’язані з записом</string>
<string name="show_uuid_summary">Показ пов\'язаного з записом чи групою UUID</string>
<string name="show_uuid_title">Показувати UUID</string>
<string name="autofill_read_only_save">Збереження даних заборонено для бази даних, відкритої лише для читання.</string>
<string name="error_save_read_only">Збереження даних заборонено для бази даних, відкритої лише для читання.</string>
<string name="autofill_ask_to_save_data_summary">Запитувати зберігати дані після заповнення форми</string>
<string name="autofill_ask_to_save_data_title">Запит збереження даних</string>
<string name="autofill_save_search_info_summary">Намагатися зберегти подробиці пошуку під час вибору запису вручну для простішого користування в подальшому</string>

View File

@@ -561,7 +561,7 @@
<string name="autofill_web_domain_blocklist_summary">Danh sách chặn ngăn việc tự động điền tên miền web</string>
<string name="autofill_block">Chặn tính năng tự động điền</string>
<string name="autofill_block_restart">Khởi động lại ứng dụng chứa biểu mẫu để kích hoạt tính năng chặn.</string>
<string name="autofill_read_only_save">Không cho phép lưu dữ liệu đối với cơ sở dữ liệu được mở ở dạng chỉ đọc.</string>
<string name="error_save_read_only">Không cho phép lưu dữ liệu đối với cơ sở dữ liệu được mở ở dạng chỉ đọc.</string>
<string name="autofill_inline_suggestions_keyboard">Đã thêm đề xuất tự động điền.</string>
<string name="allow_no_password_title">Không cho phép khóa chính</string>
<string name="allow_no_password_summary">Cho phép nhấn vào nút \"Mở\" nếu không có thông tin xác thực nào được chọn</string>

View File

@@ -463,7 +463,7 @@
<string name="database_data_remove_unlinked_attachments_summary">删除包含于数据库中但未连接到一个条目的附件</string>
<string name="show_uuid_summary">显示与一个条目或分组相链接的 UUID</string>
<string name="show_uuid_title">显示 UUID</string>
<string name="autofill_read_only_save">以只读方式打开的数据库不允许保存数据。</string>
<string name="error_save_read_only">以只读方式打开的数据库不允许保存数据。</string>
<string name="autofill_ask_to_save_data_summary">填写完表单后,询问是否保存数据</string>
<string name="autofill_ask_to_save_data_title">询问是否保存数据</string>
<string name="autofill_save_search_info_summary">手动选择条目时尝试保存搜索信息,以便将来使用</string>

View File

@@ -60,7 +60,7 @@
<string name="autofill_manual_selection_summary">顯示選項讓用戶選擇資料庫條目</string>
<string name="autofill_manual_selection_title">手動選擇</string>
<string name="autofill_preference_title">自動填入設定</string>
<string name="autofill_read_only_save">以唯讀方式開啟的資料庫不允許保存資料。</string>
<string name="error_save_read_only">以唯讀方式開啟的資料庫不允許保存資料。</string>
<string name="autofill_save_search_info_summary">進行手動輸入選擇時嘗試儲存搜尋信息,以便將來使用</string>
<string name="autofill_save_search_info_title">保存搜尋資訊</string>
<string name="autofill_select_entry">選擇項目…</string>

View File

@@ -582,7 +582,7 @@
<string name="autofill_web_domain_blocklist_summary">Blocklist that prevents auto filling of web domains</string>
<string name="autofill_block">Block autofill</string>
<string name="autofill_block_restart">Restart the app containing the form to activate the blocking.</string>
<string name="autofill_read_only_save">Data save is not allowed for a database opened as read-only.</string>
<string name="error_save_read_only">Data save is not allowed for a database opened as read-only.</string>
<string name="autofill_inline_suggestions_keyboard">Autofill suggestions added.</string>
<string name="allow_no_password_title">Allow no master key</string>
<string name="allow_no_password_summary">Allows tapping the \"Open\" button if no credentials are selected</string>

View File

@@ -19,12 +19,20 @@
*/
package com.kunzisoft.keepass.database.exception
import android.content.res.Resources
import com.kunzisoft.keepass.database.element.node.NodeId
import com.kunzisoft.keepass.database.element.node.Type
import java.io.PrintStream
import java.io.PrintWriter
abstract class DatabaseException : Exception {
abstract class LocalizedException : Exception {
constructor() : super()
constructor(message: String) : super(message)
// TODO
// open fun getLocalizedMessage(resources: Resources): String? = localizedMessage
}
abstract class DatabaseException : LocalizedException {
var innerMessage: String? = null
var parameters = mutableListOf<String>()
@@ -75,6 +83,8 @@ class InvalidAlgorithmDatabaseException : DatabaseInputException {
class UnknownDatabaseLocationException : DatabaseException()
class RegisterInReadOnlyDatabaseException() : DatabaseException()
class HardwareKeyDatabaseException : DatabaseException()
class EmptyKeyDatabaseException : DatabaseException()