diff --git a/src/keepass2android-app/Manifests/AndroidManifest_debug.xml b/src/keepass2android-app/Manifests/AndroidManifest_debug.xml
index 45df9101..e9b17aaa 100644
--- a/src/keepass2android-app/Manifests/AndroidManifest_debug.xml
+++ b/src/keepass2android-app/Manifests/AndroidManifest_debug.xml
@@ -243,6 +243,15 @@ 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_net.xml b/src/keepass2android-app/Manifests/AndroidManifest_net.xml
index 7ad26ee0..2dd6835a 100644
--- a/src/keepass2android-app/Manifests/AndroidManifest_net.xml
+++ b/src/keepass2android-app/Manifests/AndroidManifest_net.xml
@@ -255,7 +255,14 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
- x
+
+
+
+
+
+
+
+
diff --git a/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml b/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml
index f924a72a..cf2d83cc 100644
--- a/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml
+++ b/src/keepass2android-app/Manifests/AndroidManifest_nonet.xml
@@ -236,6 +236,14 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
+
+
+
+
+
+
+
+
diff --git a/src/keepass2android-app/SelectCurrentDbActivity.cs b/src/keepass2android-app/SelectCurrentDbActivity.cs
index f3119577..0430dc8b 100644
--- a/src/keepass2android-app/SelectCurrentDbActivity.cs
+++ b/src/keepass2android-app/SelectCurrentDbActivity.cs
@@ -27,6 +27,7 @@ using KeePassLib.Serialization;
using Console = System.Console;
using Object = Java.Lang.Object;
using AndroidX.Core.Content;
+using Uri = Android.Net.Uri;
namespace keepass2android
{
@@ -302,9 +303,23 @@ namespace keepass2android
}
else
{
+
if (Intent.Action == Intent.ActionView)
{
- GetIocFromViewIntent(Intent);
+ if (IsOtpUri(Intent.Data))
+ {
+ AppTask = new CreateEntryThenCloseTask()
+ {
+ AllFields = Newtonsoft.Json.JsonConvert.SerializeObject(new Dictionary()
+ {
+ { "otp", Intent.DataString }
+ })
+ };
+ }
+ else
+ {
+ GetIocFromViewIntent(Intent);
+ }
}
else if (Intent.Action == Intent.ActionSend)
{
@@ -334,6 +349,11 @@ namespace keepass2android
}
+ private bool IsOtpUri(Uri? uri)
+ {
+ return uri?.Scheme == "otpauth";
+ }
+
protected override void OnStart()
{
base.OnStart();