diff --git a/ExtendedWebView/ExtendedWebView.csproj b/ExtendedWebView/ExtendedWebView.csproj
index 6e70c6d..5fc0811 100644
--- a/ExtendedWebView/ExtendedWebView.csproj
+++ b/ExtendedWebView/ExtendedWebView.csproj
@@ -7,7 +7,7 @@
enable
enable
Com.Bnotech.ExtendedWebView
- 9.0.90
+ 9.0.120
12.2
13.1
@@ -23,7 +23,7 @@
bnotech
BNO Technology Solutions e.K.
This package provides support for a extended WebView
- ©Copyright 2024, BNO Technology Solutions e.K.
+ ©Copyright 2025, BNO Technology Solutions e.K.
WebView Extended ExtendedWebView
README.md
diff --git a/ExtendedWebView/Platforms/Android/Handlers/ExtWebViewHandler.cs b/ExtendedWebView/Platforms/Android/Handlers/ExtWebViewHandler.cs
index 03fbfba..e163616 100644
--- a/ExtendedWebView/Platforms/Android/Handlers/ExtWebViewHandler.cs
+++ b/ExtendedWebView/Platforms/Android/Handlers/ExtWebViewHandler.cs
@@ -1,4 +1,6 @@
using Android.Graphics;
+using AApp = Android.App;
+using AOS = Android.OS;
using AWebKit = Android.Webkit;
using Java.Interop;
@@ -36,8 +38,9 @@ protected override AWebKit.WebView CreatePlatformView()
webView.Settings.JavaScriptEnabled = true;
webView.Settings.DomStorageEnabled = true;
-
+
webView.SetWebViewClient(new JavascriptWebViewClient($"javascript: {JavascriptFunction}", VirtualView));
+ webView.SetWebChromeClient(new MultiWindowWebChromeClient()); // Multi-Window Unterstützung
webView.AddJavascriptInterface(_jsBridgeHandler, "jsBridge");
if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
@@ -148,3 +151,35 @@ public void InvokeAction(string data)
}
}
}
+
+ public class MultiWindowWebChromeClient : AWebKit.WebChromeClient
+ {
+ private AApp.AlertDialog? _dialog;
+
+ public override bool OnCreateWindow(AWebKit.WebView view, bool isDialog, bool isUserGesture, AOS.Message resultMsg)
+ {
+ var newWebView = new AWebKit.WebView(view.Context);
+ newWebView.Settings.JavaScriptEnabled = true;
+ newWebView.Settings.DomStorageEnabled = true;
+ newWebView.SetWebChromeClient(this);
+
+ var transport = (AWebKit.WebView.WebViewTransport)resultMsg.Obj;
+ transport.WebView = newWebView;
+ resultMsg.SendToTarget();
+
+ _dialog = new AApp.AlertDialog.Builder(view.Context)
+ .SetView(newWebView)
+ .SetPositiveButton("X", (sender, args) => newWebView.Destroy())
+ .Create();
+ _dialog.Show();
+
+ return true;
+ }
+
+ public override void OnCloseWindow(AWebKit.WebView window)
+ {
+ window.Destroy();
+ _dialog?.Dismiss();
+ _dialog = null;
+ }
+ }