From 27e3d4a96d4bf4bf7c8c9e0e13b7c9f3ea663277 Mon Sep 17 00:00:00 2001 From: Gerwin Kuijntjes Date: Mon, 6 Apr 2026 07:48:32 +0200 Subject: [PATCH] Fix crash on Add Connection: use JavaCast for Android trust manager lookup OfType() returns empty on Android because CLR type checking does not work against Java proxy objects. JavaCast<> is the correct API for casting Java-backed objects in MAUI Android bindings. Co-Authored-By: Claude Sonnet 4.6 --- .../Xamarin.Neo4j.Android/Security/NativeTrustManager.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Security/NativeTrustManager.cs b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Security/NativeTrustManager.cs index d8a1d1e..5ac6cf5 100644 --- a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Security/NativeTrustManager.cs +++ b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Security/NativeTrustManager.cs @@ -9,6 +9,7 @@ using System.IO; using System.Linq; using System.Net.Security; using System.Security.Cryptography.X509Certificates; +using Android.Runtime; using Java.Security; using Java.Security.Cert; using Javax.Net.Ssl; @@ -25,8 +26,9 @@ namespace Xamarin.Neo4j var factory = TrustManagerFactory.GetInstance(TrustManagerFactory.DefaultAlgorithm); factory.Init((KeyStore)null); _androidTrustManager = factory.GetTrustManagers() - .OfType() - .First(); + .OfType() + .Select(m => m.JavaCast()) + .First(m => m != null); } public override bool ValidateServerCertificate(Uri uri, X509Certificate2 certificate, X509Chain chain,