diff --git a/src/Android/Accessibility/AccessibilityService.cs b/src/Android/Accessibility/AccessibilityService.cs
index 1345a5cef..d57ae56a9 100644
--- a/src/Android/Accessibility/AccessibilityService.cs
+++ b/src/Android/Accessibility/AccessibilityService.cs
@@ -15,7 +15,7 @@ using Bit.Core.Utilities;
namespace Bit.Droid.Accessibility
{
- [Service(Permission = Android.Manifest.Permission.BindAccessibilityService, Label = "Bitwarden")]
+ [Service(Permission = Android.Manifest.Permission.BindAccessibilityService, Label = "Bitwarden", Exported = true)]
[IntentFilter(new string[] { "android.accessibilityservice.AccessibilityService" })]
[MetaData("android.accessibilityservice", Resource = "@xml/accessibilityservice")]
[Register("com.x8bit.bitwarden.Accessibility.AccessibilityService")]
diff --git a/src/Android/Android.csproj b/src/Android/Android.csproj
index f85cd5c15..ac444d7a9 100644
--- a/src/Android/Android.csproj
+++ b/src/Android/Android.csproj
@@ -15,7 +15,7 @@
Properties\AndroidManifest.xml
Resources
Assets
- v11.0
+ v12.1
Xamarin.Android.Net.AndroidClientHandler
@@ -213,6 +213,9 @@
+
+
+
@@ -280,6 +283,8 @@
+
+
\ No newline at end of file
diff --git a/src/Android/Autofill/AutofillHelpers.cs b/src/Android/Autofill/AutofillHelpers.cs
index 8ec3416bd..f1984dbff 100644
--- a/src/Android/Autofill/AutofillHelpers.cs
+++ b/src/Android/Autofill/AutofillHelpers.cs
@@ -19,6 +19,7 @@ using AndroidX.AutoFill.Inline;
using AndroidX.AutoFill.Inline.V1;
using Bit.Core.Abstractions;
using SaveFlags = Android.Service.Autofill.SaveFlags;
+using Bit.Droid.Utilities;
namespace Bit.Droid.Autofill
{
@@ -270,8 +271,7 @@ namespace Bit.Droid.Autofill
return null;
}
intent.PutExtra("autofillFrameworkUri", uri);
- var pendingIntent = PendingIntent.GetActivity(context, ++_pendingIntentId, intent,
- PendingIntentFlags.CancelCurrent);
+ var pendingIntent = PendingIntent.GetActivity(context, ++_pendingIntentId, intent, AndroidHelpers.AddPendingIntentMutabilityFlag(PendingIntentFlags.CancelCurrent, true));
var overlayPresentation = BuildOverlayPresentation(
AppResources.AutofillWithBitwarden,
@@ -324,7 +324,7 @@ namespace Bit.Droid.Autofill
// InlinePresentation requires nonNull pending intent (even though we only utilize one for the
// "my vault" presentation) so we're including an empty one here
pendingIntent = PendingIntent.GetService(context, 0, new Intent(),
- PendingIntentFlags.OneShot | PendingIntentFlags.UpdateCurrent);
+ AndroidHelpers.AddPendingIntentMutabilityFlag(PendingIntentFlags.OneShot | PendingIntentFlags.UpdateCurrent, true));
}
var slice = CreateInlinePresentationSlice(
inlinePresentationSpec,
diff --git a/src/Android/Autofill/AutofillService.cs b/src/Android/Autofill/AutofillService.cs
index 07171eb9e..97bc07ae4 100644
--- a/src/Android/Autofill/AutofillService.cs
+++ b/src/Android/Autofill/AutofillService.cs
@@ -15,7 +15,7 @@ using Bit.Core.Utilities;
namespace Bit.Droid.Autofill
{
- [Service(Permission = Manifest.Permission.BindAutofillService, Label = "Bitwarden")]
+ [Service(Permission = Manifest.Permission.BindAutofillService, Label = "Bitwarden", Exported = true)]
[IntentFilter(new string[] { "android.service.autofill.AutofillService" })]
[MetaData("android.autofill", Resource = "@xml/autofillservice")]
[Register("com.x8bit.bitwarden.Autofill.AutofillService")]
diff --git a/src/Android/MainActivity.cs b/src/Android/MainActivity.cs
index 8d5385e37..627fea1f3 100644
--- a/src/Android/MainActivity.cs
+++ b/src/Android/MainActivity.cs
@@ -9,7 +9,7 @@ using Android.Content.Res;
using Android.Nfc;
using Android.OS;
using Android.Runtime;
-using AndroidX.Core.Content;
+using Android.Views;
using Bit.App.Abstractions;
using Bit.App.Models;
using Bit.App.Utilities;
@@ -49,7 +49,7 @@ namespace Bit.Droid
{
var eventUploadIntent = new Intent(this, typeof(EventUploadReceiver));
_eventUploadPendingIntent = PendingIntent.GetBroadcast(this, 0, eventUploadIntent,
- PendingIntentFlags.UpdateCurrent);
+ AndroidHelpers.AddPendingIntentMutabilityFlag(PendingIntentFlags.UpdateCurrent, false));
var policy = new StrictMode.ThreadPolicy.Builder().PermitAll().Build();
StrictMode.SetThreadPolicy(policy);
@@ -278,7 +278,7 @@ namespace Bit.Droid
{
var intent = new Intent(this, Class);
intent.AddFlags(ActivityFlags.SingleTop);
- var pendingIntent = PendingIntent.GetActivity(this, 0, intent, 0);
+ var pendingIntent = PendingIntent.GetActivity(this, 0, intent, AndroidHelpers.AddPendingIntentMutabilityFlag(0, false));
// register for all NDEF tags starting with http och https
var ndef = new IntentFilter(NfcAdapter.ActionNdefDiscovered);
ndef.AddDataScheme("http");
diff --git a/src/Android/Properties/AndroidManifest.xml b/src/Android/Properties/AndroidManifest.xml
index 07ace3546..6b2809ee8 100644
--- a/src/Android/Properties/AndroidManifest.xml
+++ b/src/Android/Properties/AndroidManifest.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/src/Android/Resources/drawable-night-v26/splash_screen_round.xml b/src/Android/Resources/drawable-night-v26/splash_screen_round.xml
new file mode 100644
index 000000000..dc4c7209e
--- /dev/null
+++ b/src/Android/Resources/drawable-night-v26/splash_screen_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Android/Resources/drawable-v26/splash_screen_round.xml b/src/Android/Resources/drawable-v26/splash_screen_round.xml
new file mode 100644
index 000000000..602f055dd
--- /dev/null
+++ b/src/Android/Resources/drawable-v26/splash_screen_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Android/Resources/drawable/logo_rounded.xml b/src/Android/Resources/drawable/logo_rounded.xml
new file mode 100644
index 000000000..860d4c963
--- /dev/null
+++ b/src/Android/Resources/drawable/logo_rounded.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
diff --git a/src/Android/Resources/values-night/styles.xml b/src/Android/Resources/values-night/styles.xml
index 7e5a4074e..edfaaa455 100644
--- a/src/Android/Resources/values-night/styles.xml
+++ b/src/Android/Resources/values-night/styles.xml
@@ -4,6 +4,7 @@