From da59d019b06dbcc6df4f8be8dff929f01aa06d84 Mon Sep 17 00:00:00 2001 From: John Navas Date: Mon, 19 Jan 2026 09:11:01 -0800 Subject: [PATCH 01/10] Add SVG icon for quick settings tile --- graphics/quick_settings/ic_quick_settings_tile.svg | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 graphics/quick_settings/ic_quick_settings_tile.svg diff --git a/graphics/quick_settings/ic_quick_settings_tile.svg b/graphics/quick_settings/ic_quick_settings_tile.svg new file mode 100644 index 000000000..7da71102d --- /dev/null +++ b/graphics/quick_settings/ic_quick_settings_tile.svg @@ -0,0 +1,3 @@ + + + From a3ab5b44299890e5483e59eff9aa9d6c234f2370 Mon Sep 17 00:00:00 2001 From: John Navas Date: Mon, 19 Jan 2026 09:12:18 -0800 Subject: [PATCH 02/10] Add quick settings tile vector drawable --- .../Resources/drawable/ic_quick_settings_tile.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/keepass2android-app/Resources/drawable/ic_quick_settings_tile.xml diff --git a/src/keepass2android-app/Resources/drawable/ic_quick_settings_tile.xml b/src/keepass2android-app/Resources/drawable/ic_quick_settings_tile.xml new file mode 100644 index 000000000..ab264638f --- /dev/null +++ b/src/keepass2android-app/Resources/drawable/ic_quick_settings_tile.xml @@ -0,0 +1,10 @@ + + + From f8e0817bcfbbf1b8d04d10184ed3a11a6c096c47 Mon Sep 17 00:00:00 2001 From: John Navas Date: Mon, 19 Jan 2026 09:13:06 -0800 Subject: [PATCH 03/10] Add QuickSettingsTileService for quick access This service allows users to quickly access their password database from the Android notification shade. --- .../QuickSettingsTileService.cs | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/keepass2android-app/QuickSettingsTileService.cs diff --git a/src/keepass2android-app/QuickSettingsTileService.cs b/src/keepass2android-app/QuickSettingsTileService.cs new file mode 100644 index 000000000..a3f5397ea --- /dev/null +++ b/src/keepass2android-app/QuickSettingsTileService.cs @@ -0,0 +1,69 @@ +/* + * Keepass2Android - Password Manager for Android + * Copyright (C) 2026 Philipp Crocoll + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * --- + * Module: QuickSettingsTileService + * Description: Provides a system-wide Quick Settings Tile to launch the application. + * This service allows users to quickly access their password database from the + * Android notification shade. + */ + +using System; +using Android.App; +using Android.Content; +using Android.Service.QuickSettings; + +namespace keepass2android +{ + /// + /// Service to provide a Quick Settings Tile for the Android notification shade. + /// + [Service(Name = "keepass2android.QuickSettingsTileService", + Permission = Android.Manifest.Permission.BindQuickSettingsTile, + Label = "@string/app_name", + Icon = "@drawable/ic_quick_settings_tile", + Exported = true)] + [IntentFilter(new[] { TileService.ActionQsTile })] + public class QuickSettingsTileService : TileService + { + public override void OnClick() + { + base.OnClick(); + + if (IsLocked) + { + // Ensures the device is unlocked before attempting to show the UI. + UnlockAndRun(new Java.Lang.Runnable(StartKp2a)); + } + else + { + StartKp2a(); + } + } + + private void StartKp2a() + { + // Use the verified entry point: SelectCurrentDbActivity. + Intent intent = new Intent(this, typeof(SelectCurrentDbActivity)); + + // MANDATORY: Services must launch activities in a New Task to avoid crashes. + intent.AddFlags(ActivityFlags.NewTask); + + // Closes the notification shade and executes the intent. + StartActivityAndCollapse(intent); + } + } +} From 2dad80f6f984387ef4a410c5786ef2cb2ca5afa5 Mon Sep 17 00:00:00 2001 From: John Navas Date: Mon, 19 Jan 2026 09:15:12 -0800 Subject: [PATCH 04/10] Add QuickSettingsTileService to AndroidManifest --- .../Manifests/AndroidManifest_net.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/keepass2android-app/Manifests/AndroidManifest_net.xml b/src/keepass2android-app/Manifests/AndroidManifest_net.xml index e94525179..6c113a60d 100644 --- a/src/keepass2android-app/Manifests/AndroidManifest_net.xml +++ b/src/keepass2android-app/Manifests/AndroidManifest_net.xml @@ -290,6 +290,16 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik + + + + + From 6180f8d679a6757ca38b355e0899e8bc8b094d7c Mon Sep 17 00:00:00 2001 From: John Navas Date: Mon, 19 Jan 2026 09:15:55 -0800 Subject: [PATCH 05/10] Add QuickSettingsTileService to AndroidManifest --- .../Manifests/AndroidManifest_nonet.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml b/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml index bb235aff9..fdc520de2 100644 --- a/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml +++ b/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml @@ -266,6 +266,16 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik + + + + + From e8747fcba72db3cba6e32fa94d26b51ebe5a27c7 Mon Sep 17 00:00:00 2001 From: John Navas Date: Mon, 19 Jan 2026 09:16:31 -0800 Subject: [PATCH 06/10] Add QuickSettingsTileService to AndroidManifest --- .../Manifests/AndroidManifest_debug.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/keepass2android-app/Manifests/AndroidManifest_debug.xml b/src/keepass2android-app/Manifests/AndroidManifest_debug.xml index 2045646d2..162d47d3d 100644 --- a/src/keepass2android-app/Manifests/AndroidManifest_debug.xml +++ b/src/keepass2android-app/Manifests/AndroidManifest_debug.xml @@ -281,6 +281,16 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik + + + + + From a66eeb05c84e7dff6fe9048d3b378f2e2ccbd525 Mon Sep 17 00:00:00 2001 From: John Navas Date: Mon, 19 Jan 2026 10:05:39 -0800 Subject: [PATCH 07/10] Dummy change From ff567a8640acef6b7894e2308b016aa60dada7dc Mon Sep 17 00:00:00 2001 From: John Navas Date: Mon, 19 Jan 2026 13:13:06 -0800 Subject: [PATCH 08/10] Update minSdkVersion from 21 to 24 Required to support Quick Settings Tile --- src/keepass2android-app/Manifests/AndroidManifest_net.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/keepass2android-app/Manifests/AndroidManifest_net.xml b/src/keepass2android-app/Manifests/AndroidManifest_net.xml index 6c113a60d..48e3491f6 100644 --- a/src/keepass2android-app/Manifests/AndroidManifest_net.xml +++ b/src/keepass2android-app/Manifests/AndroidManifest_net.xml @@ -58,7 +58,7 @@ - + From c0d2b54189a4bcc20e9eb9ea4021e9770cbbb57b Mon Sep 17 00:00:00 2001 From: John Navas Date: Mon, 19 Jan 2026 13:14:41 -0800 Subject: [PATCH 09/10] Update minSdkVersion from 21 to 24 Required for Quick Settings Tile --- src/keepass2android-app/Manifests/AndroidManifest_nonet.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml b/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml index fdc520de2..12f75ed10 100644 --- a/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml +++ b/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml @@ -58,7 +58,7 @@ - + From 87b73120eb21dae6806ee5df2727f35030689f7d Mon Sep 17 00:00:00 2001 From: John Navas Date: Mon, 19 Jan 2026 13:15:34 -0800 Subject: [PATCH 10/10] Update minSdkVersion from 21 to 24 Required for Quick Settings Tile --- src/keepass2android-app/Manifests/AndroidManifest_debug.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/keepass2android-app/Manifests/AndroidManifest_debug.xml b/src/keepass2android-app/Manifests/AndroidManifest_debug.xml index 162d47d3d..3bcee8ad1 100644 --- a/src/keepass2android-app/Manifests/AndroidManifest_debug.xml +++ b/src/keepass2android-app/Manifests/AndroidManifest_debug.xml @@ -59,7 +59,7 @@ - +