Compare commits

..

17 Commits

Author SHA1 Message Date
Philipp Crocoll
07f08a8851 autofill: avoid crash when looking up a null key.
closes https://github.com/PhilippC/keepass2android/issues/2362
2025-03-11 16:11:35 +01:00
Philipp Crocoll
d2e0ae6394 after updating to targetSdkVersion=34, an implicit mutable intent could lead to a crash.
closes https://github.com/PhilippC/keepass2android/issues/2790
2025-03-11 16:10:52 +01:00
Philipp Crocoll
9cd8996aeb manifest and changelog for 1.12-r1 2025-03-04 15:01:19 +01:00
PhilippC
ae35d5873a Merge pull request #2785 from PhilippC/bugfix/webdav-fileselect-not-working-always
Bugfix: Webdav username and password could got lost during file selection
2025-03-04 12:25:26 +01:00
PhilippC
fe9aaa0d29 Merge pull request #2786 from PhilippC/bugfix/webdav-dialog-crashing
add a theme to SelectStorageLocationActivity
2025-03-04 12:16:08 +01:00
PhilippC
076bde7669 Merge pull request #2784 from PhilippC/l10n_master3
New Crowdin updates
2025-03-04 12:11:29 +01:00
Philipp Crocoll
592bee1ac1 Merge branch 'master' of https://github.com/PhilippC/keepass2android 2025-03-04 11:58:13 +01:00
PhilippC
2157cc8e4a New translations strings.xml (Romanian) 2025-03-04 11:54:51 +01:00
Philipp Crocoll
2cd11ba50e add a theme to SelectStorageLocationActivity. without, the webdav credential dialog was crashing. 2025-02-25 16:15:45 +01:00
PhilippC
0d4fe11cfb Merge pull request #2772 from PhilippC/l10n_master3
New Crowdin updates
2025-02-25 11:07:18 +01:00
PhilippC
ecbf4e511d New translations strings.xml (Spanish) 2025-02-24 14:24:35 +01:00
PhilippC
16bbae832e New translations strings.xml (Slovenian) 2025-02-17 08:34:55 +01:00
PhilippC
571da788d0 New translations strings.xml (Slovak) 2025-02-14 22:47:24 +01:00
PhilippC
f2eed5ece0 New translations strings.xml (Slovak) 2025-02-14 21:28:37 +01:00
PhilippC
2c5516310f New translations strings.xml (Chinese Simplified) 2025-02-12 12:55:34 +01:00
PhilippC
5550dffab8 New translations strings.xml (Portuguese, Brazilian) 2025-02-11 23:57:51 +01:00
PhilippC
b9744dd6b5 New translations strings.xml (German) 2025-02-11 18:28:15 +01:00
14 changed files with 79 additions and 9 deletions

View File

@@ -445,6 +445,9 @@ namespace Kp2aAutofillParser
public static string ToCanonicalHint(string hint)
{
//avoid crash when looking up a null key
if (hint == null)
return "";
string canonicalHint;
if (!hintToCanonicalReplacement.TryGetValue(hint, out canonicalHint))
canonicalHint = hint;
@@ -841,6 +844,7 @@ namespace Kp2aAutofillParser
continue;
if (viewHints.Where(h => h != null).Select(AutofillHintsHelper.ToCanonicalHint).Intersect(_autofillHintsForLogin).Any())
{
AddFieldToHintMap(viewNode, viewHints.Where(h => h != null).Select(AutofillHintsHelper.ToCanonicalHint).ToHashSet().ToArray());
}

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="201"
android:versionName="1.12-r0"
android:versionCode="202"
android:versionName="1.12-r1"
package="keepass2android.keepass2android"
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="auto">

View File

@@ -0,0 +1,24 @@
using Android.Content.PM;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace keepass2android
{
[Activity(Label = AppNames.AppName,
MainLauncher = false,
Theme = "@style/Kp2aTheme_BlueNoActionBar",
Exported = true)]
///For autofill, we sometimes need to pass an intent to an inline presentation which never gets fired. We use this as a dummy activity.
public class NullActivity: Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
Kp2aLog.Log("NullActivity.OnCreate - this is unexpected.");
base.OnCreate(savedInstanceState);
Finish();
}
}
}

View File

@@ -295,7 +295,7 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
<string name="TanExpiresOnUse_title">TAN verfällt bei Verwendung</string>
<string name="TanExpiresOnUse_summary">TAN-Einträge als abgelaufen markieren, wenn sie verwendet werden</string>
<string name="ShowUsernameInList_title">Benutzernamen in Liste anzeigen</string>
<string name="ShowUsernameInList_summary">Zeige Benutzernamen unter den Titeln der Einträge. Hilfreich bei mehreren Accounts für einen Dienst oder bei TANs.</string>
<string name="ShowUsernameInList_summary">Benutzernamen unter den Eintragstiteln anzeigen. Nützlich für mehrere Konten bei einem Dienst oder für TANs.</string>
<string name="RememberRecentFiles_title">Datenbanken merken</string>
<string name="RememberRecentFiles_summary">Dateinamen der bisher geöffneten Datenbanken speichern und im Bildschirm zum Öffnen der Datenbank anzeigen.</string>
<string name="NoDalVerification_title">Keine Digital-Asset-Link-Verifikation</string>

View File

@@ -681,6 +681,17 @@
<string name="HintLocalBackupInvalidCompositeKey"> \n
&#8226; Sugerencia: Si piensas que la Base de Datos está dañada o no recuerdas la contraseña maestra después de cambiarla, inténtalo con la última versión de la Base de Datos abierta con éxito pulsando en \"%1$s\" y seleccionando la copia local.
</string>
<string name="HintLocalBackupOtherError"> \n
• Sugerencia: Keepass2Android ha almacenado la última versión del archivo abierto con éxito en el almacenamiento interno. Puedes abrirlo tocando \"%1$s\" y seleccionando la copia de seguridad local.
</string>
<string name="CorruptDatabaseHelp"> El archivo está corrupto. \n
Aquí hay algunas sugerencias que podrían ayudar a diagnosticar el problema:\n
• Si copiaste el archivo a través de USB ( modo MTP), por favor inténtalo de nuevo usando una herramienta como MyPhoneExplorer. MTP trunca los archivos en ciertos casos.\n
• Si no puedes abrir el archivo desde la misma localización en tu PC, es muy probable que el archivo en realidad esté corrupto. En ese caso, por favor usa una copia de seguridad de la base de datos. Si asumes que Keepass2Android ha corrompido el archivo, por favor contacta con el equipo de soporte.\n
• Si aún puedes abrir el archivo en tu PC, por favor contacta con el equipo de soporte. Podrías intentar guardarlo con una configuración diferente (p.ej. descomprimido) en el PC y volver a intentar abrirlo en Keepass2Android.
</string>
<string name="open_other_db">Abrir otrar base de datos…</string>
<string name="select_database">Seleccione base de datos</string>
<string name="configure_child_dbs">Configure bases de datos hijas…</string>
@@ -1164,5 +1175,7 @@
<string name="AutofillWarning_Intro">Está a punto de insertar credenciales para el dominio \"%1$s\" en la aplicación \"%2$s\".</string>
<string name="AutofillWarning_FillDomainInUntrustedApp">Si confía en que \"%2$s\" pertenece a \"%1$s\", o confía en que la aplicación \"%2$s\" no utilizará mal las credenciales (p. e. porque es una aplicación de navegador de confianza), está bien continuar. Si no, por favor cancele.</string>
<string name="AutofillWarning_trustAsBrowser">Aceptar siempre en \"%1$s\"</string>
<string name="kp2a_switch_on_sendgodone">Volver cuando termine</string>
<string name="kp2a_switch_on_sendgodone_summary">Volver cuando se presione enviar/ir/finalizado</string>
<string name="english_ime_settings">Ajustes del teclado de Keepass2Android</string>
</resources>

View File

@@ -1184,5 +1184,7 @@
<string name="AutofillWarning_Intro">Você esta prestes a inserir credenciais do domínio \"%1$s\" no app \"%2$s\".</string>
<string name="AutofillWarning_FillDomainInUntrustedApp">Se você confia em \"%2$s\" para pertencer \"%1$s\" ou se você confia no app \"%2$s\" a não mal-usar as credenciais (ex. por causa de um app de navegador confiável), é ok para continuar. Se não, por favor cancele.</string>
<string name="AutofillWarning_trustAsBrowser">Aceitar sempre em \"%1$s\"</string>
<string name="kp2a_switch_on_sendgodone">Voltar quando terminar</string>
<string name="kp2a_switch_on_sendgodone_summary">Voltar ao pressionar enviar/ir/concluído</string>
<string name="english_ime_settings">Configurações do teclado Android</string>
</resources>

View File

@@ -151,6 +151,7 @@
<string name="hint_keyfile">fişier cheie</string>
<string name="hint_length">lungime</string>
<string name="hint_pass">parola</string>
<string name="hint_keyfile_path">Calea cheii private SSH</string>
<string name="hint_login_pass">Parolă</string>
<string name="hint_title">nume</string>
<string name="hint_url">URL</string>

View File

@@ -672,6 +672,26 @@
<string name="Continue">Pokračovať</string>
<string name="NoFilenameWarning">Zadaná URI pravdepodobne nie je názvom súboru. Ste si istí, že ide o platný súbor?</string>
<string name="FirstInvalidCompositeKeyError">Neplatný kompozitný kľúč! Prosím skúste to ešte raz.</string>
<string name="RepeatedInvalidCompositeKeyHelp"> Neplatný kompozitný kľúč! Na odomknutie databázy skúste urobiť toto:\n
• Uistite sa, že ste zadali správne heslo. Na zobrazenie zadaného hesla kliknite na ikonu s okom.\n
• Uistite sa, že je vybraný správny typ hesla a že sa zhoduje s typom použitým pri vytváraní databázy.\n
• Uistite sa, že ste vybrali správny databázový súbor.
</string>
<string name="HintLocalBackupInvalidCompositeKey"> \n
• Pomôcka: Ak si myslíte, že je súbor s databázou poškodený alebo si nepamätáte primárny kľúč po jeho úprave, môžete skúsiť použiť poslednú úspešne otvorenú verziu súboru (ťuknite na \"%1$s\") a vybrať lokálnu zálohu.
</string>
<string name="HintLocalBackupOtherError"> \n
• Pomôcka: Keepass2Android uložil poslednú úspešne otvorenú verziu súboru do interného úložiska. Môžete ju otvoriť ťuknutím na \"%1$s\" a výberom lokálnej zálohy.
</string>
<string name="CorruptDatabaseHelp"> Súbor je poškodený. \n
Tu je niekoľko tipov, ktoré vám môžu pomôcť odhaliť problém:\n
• ak ste súbor skopírovali cez USB (režim MTP), skúste to ešte raz s použitím takého nástroja, ako je napr. MyPhoneExplorer. Režim MTP v niektorých prípadoch skracuje súbory.\n
• Ak nemôžete otvoriť súbor z rovnakého umiestnenia vo svojom PC, je veľmi pravdepodobné, že je poškodený. V takom prípade použite zálohu databázy. Ak predpokladáte, že súbor porušila aplikácia Keepass2Android, prosím kontaktujte tím podpory.\n
• Ak sa dá súbor otvoriť v PC, kontaktujte tím podpory. Môžete tiež skúsiť uložiť ho s odlišnými nastaveniami (napríklad nekomprimovane) na PC a potom ho opäť skúsiť otvoriť v aplikácii Keepass2Android.
</string>
<string name="open_other_db">Otvoriť inú databázu…</string>
<string name="select_database">Vybrať databázu</string>
<string name="configure_child_dbs">Konfigurovať sekundárne databázy…</string>
@@ -1164,5 +1184,7 @@
<string name="AutofillWarning_Intro">Chcete vložiť prihlas. údaje pre doménu \"%1$s\" do aplikácie \"%2$s\".</string>
<string name="AutofillWarning_FillDomainInUntrustedApp">Ak dôverujete aplikácii \"%2$s\", že patrí \"%1$s\" alebo ak dôverujete, že aplikácia \"%2$s\" nezneužíva prihlasovacie údaje (ak je to napríklad dôveryhodný prehliadač), môžete pokračovať. Ak nie, prosím zrušte túto akciu.</string>
<string name="AutofillWarning_trustAsBrowser">Vždy súhlasiť v \"%1$s\"</string>
<string name="kp2a_switch_on_sendgodone">Po dokončení prepnúť späť</string>
<string name="kp2a_switch_on_sendgodone_summary">Po stlačení Odoslať/Prejsť/Hotovo prejsť späť</string>
<string name="english_ime_settings">Nastavenia klávesnice Keepass2Android</string>
</resources>

View File

@@ -1182,5 +1182,7 @@
<string name="AutofillWarning_Intro">V aplikacijo \"%2$s\" vstavite poverilnice za domeno \"%1$s\".</string>
<string name="AutofillWarning_FillDomainInUntrustedApp">Če zaupate, da \"%2$s\" pripada \"%1$s\" ali da zaupate aplikaciji \"%2$s\" in ne boste zlorabljali poverilnic (npr. ker gre za zaupanja vredno aplikacijo brskalnika), je v redu, če nadaljujete . V nasprotnem primeru prekličite postopek.</string>
<string name="AutofillWarning_trustAsBrowser">Sprejmi vedno v \"%1$s\"</string>
<string name="kp2a_switch_on_sendgodone">Preklopi nazaj, ko je končano</string>
<string name="kp2a_switch_on_sendgodone_summary">Preklopi nazaj, ko pritisnete gumb za pošiljanje/prehajanje/končano</string>
<string name="english_ime_settings">Nastavitve tipkovnice Keepass2Android</string>
</resources>

View File

@@ -1156,5 +1156,7 @@ Initial public release
<string name="AutofillWarning_Intro">您将要将域名\"%1$s\"的凭据插入应用“%2$s”。</string>
<string name="AutofillWarning_FillDomainInUntrustedApp">如果你相信“%2$s”属于\"%1$s\",或者你相信应用“%2$s”不会滥用凭据例如它是受信任的浏览器应用所以可以继续。如果不是请取消。</string>
<string name="AutofillWarning_trustAsBrowser">总是在 \"%1$s 中接受</string>
<string name="kp2a_switch_on_sendgodone">完成后切换回来</string>
<string name="kp2a_switch_on_sendgodone_summary">按下发送/转到/完成时切换回来</string>
<string name="english_ime_settings">键盘设置</string>
</resources>

View File

@@ -737,6 +737,7 @@
<item>Upgraded OneDrive SDK to version 5.68</item>
<item>Upgraded Dropbox SDK to version 7.0.0</item>
<item>Upgraded Gradle, NewtonsoftJson, FluentFTP, MegaApiClient and okhttp</item>
<item>Bugfix in WebDav file selection</item>
</string-array>

View File

@@ -12,7 +12,7 @@ using keepass2android;
namespace keepass2android
{
[Activity(Label = "")]
[Activity(Label = "", Theme = "@style/Kp2aTheme_BlueActionBar")]
public class SelectStorageLocationActivity : SelectStorageLocationActivityBase, IDialogInterfaceOnDismissListener
{
private ActivityDesign _design;

View File

@@ -30,10 +30,9 @@ namespace keepass2android.services.AutofillBase
{
return null;
}
//make sure we have a pendingIntent always not null
pendingIntent ??= PendingIntent.GetService(context, 0, new Intent(),
Util.AddMutabilityFlag(PendingIntentFlags.OneShot | PendingIntentFlags.UpdateCurrent, PendingIntentFlags.Mutable));
// If the pending intent is null, we need to create a dummy one to avoid a crash
pendingIntent ??= PendingIntent.GetActivity(context, 0, new Intent(context, typeof(NullActivity)), PendingIntentFlags.OneShot | PendingIntentFlags.UpdateCurrent | PendingIntentFlags.Immutable);
var slice = CreateInlinePresentationSlice(
inlinePresentationSpec,
text,

View File

@@ -405,7 +405,7 @@ namespace keepass2android.services.AutofillBase
var datasetBuilder = new Dataset.Builder(presentation);
datasetBuilder.SetAuthentication(pendingIntent?.IntentSender);
AutofillHelper.AddInlinePresentation(this, inlinePresentationSpec, text, datasetBuilder, Resource.Drawable.baseline_close_24, null);
AutofillHelper.AddInlinePresentation(this, inlinePresentationSpec, text, datasetBuilder, Resource.Drawable.baseline_close_24, pendingIntent);
foreach (var autofillId in autofillIds)
{