diff --git a/src/keepass2android-app/EntryActivity.cs b/src/keepass2android-app/EntryActivity.cs
index 628526540..62450f1f2 100644
--- a/src/keepass2android-app/EntryActivity.cs
+++ b/src/keepass2android-app/EntryActivity.cs
@@ -491,9 +491,9 @@ protected override void OnCreate(Bundle savedInstanceState)
App.Kp2a.LastOpenedEntry = new PwEntryOutput(Entry, App.Kp2a.CurrentDb);
_pluginActionReceiver = new PluginActionReceiver(this);
- RegisterReceiver(_pluginActionReceiver, new IntentFilter(Strings.ActionAddEntryAction));
+ RegisterReceiver(_pluginActionReceiver, new IntentFilter(Strings.ActionAddEntryAction), ReceiverFlags.Exported);
_pluginFieldReceiver = new PluginFieldReceiver(this);
- RegisterReceiver(_pluginFieldReceiver, new IntentFilter(Strings.ActionSetEntryField));
+ RegisterReceiver(_pluginFieldReceiver, new IntentFilter(Strings.ActionSetEntryField), ReceiverFlags.Exported);
var notifyPluginsOnOpenThread = new Thread(NotifyPluginsOnOpen);
notifyPluginsOnOpenThread.Start();
diff --git a/src/keepass2android-app/LockCloseActivity.cs b/src/keepass2android-app/LockCloseActivity.cs
index 9ea1babe2..57b6f1989 100644
--- a/src/keepass2android-app/LockCloseActivity.cs
+++ b/src/keepass2android-app/LockCloseActivity.cs
@@ -69,7 +69,7 @@ protected override void OnCreate(Bundle savedInstanceState)
IntentFilter filter = new IntentFilter();
filter.AddAction(Intents.DatabaseLocked);
filter.AddAction(Intent.ActionScreenOff);
- RegisterReceiver(_intentReceiver, filter);
+ RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported);
}
protected override void OnDestroy()
diff --git a/src/keepass2android-app/LockCloseListActivity.cs b/src/keepass2android-app/LockCloseListActivity.cs
index 1f05e0940..94cad492c 100644
--- a/src/keepass2android-app/LockCloseListActivity.cs
+++ b/src/keepass2android-app/LockCloseListActivity.cs
@@ -55,7 +55,7 @@ protected override void OnCreate(Bundle savedInstanceState)
filter.AddAction(Intents.DatabaseLocked);
filter.AddAction(Intent.ActionScreenOff);
- RegisterReceiver(_intentReceiver, filter);
+ RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported);
}
diff --git a/src/keepass2android-app/LockingClosePreferenceActivity.cs b/src/keepass2android-app/LockingClosePreferenceActivity.cs
index fd2baebfa..0e0884097 100644
--- a/src/keepass2android-app/LockingClosePreferenceActivity.cs
+++ b/src/keepass2android-app/LockingClosePreferenceActivity.cs
@@ -39,7 +39,7 @@ protected override void OnCreate(Bundle savedInstanceState)
_intentReceiver = new LockCloseActivityBroadcastReceiver(this);
IntentFilter filter = new IntentFilter();
filter.AddAction(Intents.DatabaseLocked);
- RegisterReceiver(_intentReceiver, filter);
+ RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported);
}
protected override void OnResume() {
diff --git a/src/keepass2android-app/Manifests/AndroidManifest_debug.xml b/src/keepass2android-app/Manifests/AndroidManifest_debug.xml
index 2edff61b3..27a4d6bc3 100644
--- a/src/keepass2android-app/Manifests/AndroidManifest_debug.xml
+++ b/src/keepass2android-app/Manifests/AndroidManifest_debug.xml
@@ -43,7 +43,7 @@
-
+
+
diff --git a/src/keepass2android-app/Manifests/AndroidManifest_net.xml b/src/keepass2android-app/Manifests/AndroidManifest_net.xml
index a3e913faf..79b4b3ab7 100644
--- a/src/keepass2android-app/Manifests/AndroidManifest_net.xml
+++ b/src/keepass2android-app/Manifests/AndroidManifest_net.xml
@@ -42,7 +42,7 @@
-
+
@@ -270,6 +270,7 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
+
diff --git a/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml b/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml
index 3fce187d5..f924a72a1 100644
--- a/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml
+++ b/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml
@@ -40,7 +40,7 @@
-
+
(Resource.Id.QuickUnlock_password));
@@ -503,8 +503,6 @@ public override void OnReceive(Context context, Intent intent)
}
}
}
-
-
}
}
diff --git a/src/keepass2android-app/SelectCurrentDbActivity.cs b/src/keepass2android-app/SelectCurrentDbActivity.cs
index 744fd0c25..26f270cae 100644
--- a/src/keepass2android-app/SelectCurrentDbActivity.cs
+++ b/src/keepass2android-app/SelectCurrentDbActivity.cs
@@ -343,7 +343,7 @@ protected override void OnStart()
IntentFilter filter = new IntentFilter();
filter.AddAction(Intents.DatabaseLocked);
filter.AddAction(Intent.ActionScreenOff);
- RegisterReceiver(_intentReceiver, filter);
+ RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported);
}
}
diff --git a/src/keepass2android-app/app/App.cs b/src/keepass2android-app/app/App.cs
index a3c94786e..510c5d34b 100644
--- a/src/keepass2android-app/app/App.cs
+++ b/src/keepass2android-app/app/App.cs
@@ -1342,7 +1342,7 @@ public override void OnCreate()
intentFilter.AddAction(Intents.LockDatabase);
intentFilter.AddAction(Intents.LockDatabaseByTimeout);
intentFilter.AddAction(Intents.CloseDatabase);
- Context.RegisterReceiver(broadcastReceiver, intentFilter);
+ Context.RegisterReceiver(broadcastReceiver, intentFilter, ReceiverFlags.Exported);
//ZXing.Net.Mobile.Forms.Android.Platform.Init();
}
diff --git a/src/keepass2android-app/services/CopyToClipboardService.cs b/src/keepass2android-app/services/CopyToClipboardService.cs
index a3817301b..fff79c56c 100644
--- a/src/keepass2android-app/services/CopyToClipboardService.cs
+++ b/src/keepass2android-app/services/CopyToClipboardService.cs
@@ -322,7 +322,7 @@ public override StartCommandResult OnStartCommand(Intent intent, StartCommandFla
_stopOnLockBroadcastReceiver = new StopOnLockBroadcastReceiver(this);
IntentFilter filter = new IntentFilter();
filter.AddAction(Intents.DatabaseLocked);
- RegisterReceiver(_stopOnLockBroadcastReceiver, filter);
+ RegisterReceiver(_stopOnLockBroadcastReceiver, filter, ReceiverFlags.Exported);
}
if ((intent.Action == Intents.ShowNotification) || (intent.Action == Intents.UpdateKeyboard))
@@ -529,7 +529,7 @@ public void DisplayAccessNotifications(PwEntryOutput entry, bool activateKeyboar
_notificationDeletedBroadcastReceiver = new NotificationDeletedBroadcastReceiver(this);
IntentFilter deletefilter = new IntentFilter();
deletefilter.AddAction(ActionNotificationCancelled);
- RegisterReceiver(_notificationDeletedBroadcastReceiver, deletefilter);
+ RegisterReceiver(_notificationDeletedBroadcastReceiver, deletefilter, ReceiverFlags.Exported);
}
}
diff --git a/src/keepass2android-app/services/OngoingNotificationsService.cs b/src/keepass2android-app/services/OngoingNotificationsService.cs
index 35e2a0db3..4dbb0e337 100644
--- a/src/keepass2android-app/services/OngoingNotificationsService.cs
+++ b/src/keepass2android-app/services/OngoingNotificationsService.cs
@@ -18,6 +18,7 @@ You should have received a copy of the GNU General Public License
using System;
using Android.App;
using Android.Content;
+using Android.Content.PM;
using Android.Graphics;
using Android.OS;
using Android.Preferences;
@@ -37,7 +38,9 @@ namespace keepass2android
/// used by the user. This ensures the database is kept in memory (until Android kills it due to low memory).
/// It is important to also have a foreground service also for the "unlocked" state because it's really
/// irritating if the db is closed while switching between apps.
- [Service]
+ [Service(ForegroundServiceType = ForegroundService.TypeSpecialUse )]
+ [MetaData("android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE", Value = " This service is running as foreground service to keep the app alive even when it's not currently used by the user. This ensures the database is kept in memory (until Android kills it due to low memory). It is important to also have a foreground service also for the \"unlocked\" state because it's really irritating if the db is closed while switching between apps.")]
+
public class OngoingNotificationsService : Service
{
protected override void AttachBaseContext(Context baseContext)
@@ -57,7 +60,7 @@ public override void OnCreate()
_screenOffReceiver = new ScreenOffReceiver();
IntentFilter filter = new IntentFilter();
filter.AddAction(Intent.ActionScreenOff);
- RegisterReceiver(_screenOffReceiver, filter);
+ RegisterReceiver(_screenOffReceiver, filter, ReceiverFlags.Exported);
}