Fix crash on Add Connection: use JavaCast for Android trust manager lookup

OfType<IX509TrustManager>() 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 <noreply@anthropic.com>
This commit is contained in:
Gerwin Kuijntjes
2026-04-06 07:48:32 +02:00
parent b1ddcaa849
commit 27e3d4a96d

View File

@@ -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<IX509TrustManager>()
.First();
.OfType<Java.Lang.Object>()
.Select(m => m.JavaCast<IX509TrustManager>())
.First(m => m != null);
}
public override bool ValidateServerCertificate(Uri uri, X509Certificate2 certificate, X509Chain chain,