From d06f5808fa9f3f876ee27a45b1db425514c59fef Mon Sep 17 00:00:00 2001 From: John Navas Date: Fri, 26 Dec 2025 16:11:03 -0800 Subject: [PATCH 01/10] Add files via upload * 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. --- .../QuickSettingsTileService.cs | 78 +++++++++++++++++++ 1 file changed, 78 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..3580ac855 --- /dev/null +++ b/src/keepass2android-app/QuickSettingsTileService.cs @@ -0,0 +1,78 @@ +/* + * Keepass2Android - Password Manager for Android + * Copyright (C) 2025 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; +using Android.Graphics.Drawables; + +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 + { + /// + /// Called when the user taps the tile in the Quick Settings panel. + /// + public override void OnClick() + { + base.OnClick(); + + // Security check: prompt for device unlock if the phone is currently locked. + if (IsLocked) + { + UnlockAndRun(new Java.Lang.Runnable(() => { + StartKp2a(); + })); + } + else + { + StartKp2a(); + } + } + + /// + /// Launches the main application entry point. + /// + private void StartKp2a() + { + // Redirect to LaunchActivity to handle database lock/unlock state. + Intent intent = new Intent(this, typeof(LaunchActivity)); + + // Flags to handle activity stack and background-to-foreground transition. + intent.AddFlags(ActivityFlags.NewTask | ActivityFlags.ClearTop); + + // Closes the notification drawer and executes the intent. + StartActivityAndCollapse(intent); + } + } +} \ No newline at end of file From 8067360831b35b2003ed503dbde4e56fbbc8ae08 Mon Sep 17 00:00:00 2001 From: John Navas Date: Fri, 26 Dec 2025 16:15:51 -0800 Subject: [PATCH 02/10] Add files via upload Quick Settings Tile image per Android standards. --- .../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..4fe1f4a04 --- /dev/null +++ b/src/keepass2android-app/Resources/drawable/ic_quick_settings_tile.xml @@ -0,0 +1,10 @@ + + + \ No newline at end of file From 59a97b05e66ba9c0236b2e056aed0251b2a7ab41 Mon Sep 17 00:00:00 2001 From: John Navas Date: Fri, 26 Dec 2025 16:19:20 -0800 Subject: [PATCH 03/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..45213f0c4 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 80673a4891e5e4f94aaeb15990d3439495c29632 Mon Sep 17 00:00:00 2001 From: John Navas Date: Fri, 26 Dec 2025 16:21:47 -0800 Subject: [PATCH 04/10] Update AndroidManifest_net.xml with Quick Settings TIle Service --- .../Manifests/AndroidManifest_net.xml | 316 ++++++++++++++++++ 1 file changed, 316 insertions(+) diff --git a/src/keepass2android-app/Manifests/AndroidManifest_net.xml b/src/keepass2android-app/Manifests/AndroidManifest_net.xml index 9873abcde..114233ef0 100644 --- a/src/keepass2android-app/Manifests/AndroidManifest_net.xml +++ b/src/keepass2android-app/Manifests/AndroidManifest_net.xml @@ -290,6 +290,322 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 967c55059f187b5c724e6a86e524a773bec77386 Mon Sep 17 00:00:00 2001 From: John Navas Date: Fri, 26 Dec 2025 16:22:37 -0800 Subject: [PATCH 05/10] Update AndroidManifest_nonet.xml with Quick Settings TIle Service Added XML declaration and license information to the AndroidManifest_nonet.xml file. Updated intent filters and permissions for better functionality. --- .../Manifests/AndroidManifest_nonet.xml | 316 ++++++++++++++++++ 1 file changed, 316 insertions(+) diff --git a/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml b/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml index 9e2cbd925..bcfef98d9 100644 --- a/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml +++ b/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml @@ -266,6 +266,322 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 9a61c3754955006d09e0bac8e9ec4b6292872dfe Mon Sep 17 00:00:00 2001 From: John Navas Date: Fri, 26 Dec 2025 16:40:16 -0800 Subject: [PATCH 06/10] Fix error is last version. Removed duplicate XML declaration and license comments from the AndroidManifest_net.xml file. Updated the service declaration for QuickSettingsTileService. --- .../Manifests/AndroidManifest_net.xml | 328 +----------------- 1 file changed, 11 insertions(+), 317 deletions(-) diff --git a/src/keepass2android-app/Manifests/AndroidManifest_net.xml b/src/keepass2android-app/Manifests/AndroidManifest_net.xml index 114233ef0..db92e3a6b 100644 --- a/src/keepass2android-app/Manifests/AndroidManifest_net.xml +++ b/src/keepass2android-app/Manifests/AndroidManifest_net.xml @@ -1,4 +1,4 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + From 148e95056b9bde6323b7bfbbabfdc186bcb4b576 Mon Sep 17 00:00:00 2001 From: John Navas Date: Fri, 26 Dec 2025 16:41:54 -0800 Subject: [PATCH 07/10] Fix error in last version Removed duplicate XML declaration and license comments from AndroidManifest_nonet.xml. Adjusted permissions and service declarations. --- .../Manifests/AndroidManifest_nonet.xml | 328 +----------------- 1 file changed, 11 insertions(+), 317 deletions(-) diff --git a/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml b/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml index bcfef98d9..9c566758e 100644 --- a/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml +++ b/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml @@ -1,4 +1,4 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + From 4fcd0358bbb6d92ca5667e39cf43ad423c853e17 Mon Sep 17 00:00:00 2001 From: John Navas Date: Fri, 26 Dec 2025 16:51:55 -0800 Subject: [PATCH 08/10] Add SVG icon for quick settings tile --- graphics/quick_settings/ic_quick_settings_tile.svg | 1 + 1 file changed, 1 insertion(+) 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..5904fb937 --- /dev/null +++ b/graphics/quick_settings/ic_quick_settings_tile.svg @@ -0,0 +1 @@ + From fef9a8797ce02434f1fa0f16db18c18282d3c766 Mon Sep 17 00:00:00 2001 From: John Navas Date: Fri, 26 Dec 2025 16:53:08 -0800 Subject: [PATCH 09/10] Add vector format to quick settings tile SVG --- graphics/quick_settings/ic_quick_settings_tile.svg | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/graphics/quick_settings/ic_quick_settings_tile.svg b/graphics/quick_settings/ic_quick_settings_tile.svg index 5904fb937..d7550acd7 100644 --- a/graphics/quick_settings/ic_quick_settings_tile.svg +++ b/graphics/quick_settings/ic_quick_settings_tile.svg @@ -1 +1,10 @@ - + + + From 58eadf1f40e6d012a9d9ee74ac69ad46b110eaa8 Mon Sep 17 00:00:00 2001 From: John Navas Date: Fri, 26 Dec 2025 16:56:29 -0800 Subject: [PATCH 10/10] Convert vector graphic to SVG format --- graphics/quick_settings/ic_quick_settings_tile.svg | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/graphics/quick_settings/ic_quick_settings_tile.svg b/graphics/quick_settings/ic_quick_settings_tile.svg index d7550acd7..5904fb937 100644 --- a/graphics/quick_settings/ic_quick_settings_tile.svg +++ b/graphics/quick_settings/ic_quick_settings_tile.svg @@ -1,10 +1 @@ - - - +