Alles, was ich erreichen möchte, ist Ausnahmen in meiner App zu fangen, so dass ich sie an einen Server senden kann. Ich habe herausgefunden, dass ich dies tun kann, indem ich meine benutzerdefinierte UncaughtExceptionHandler Basis auf nativem Android-Code in Java schrieb, antwortete here in StackOverflow.So schreiben Sie einen benutzerdefinierten UncaughtExceptionHandler in Xamarin.Android
Das ist mein CustomExceptionHandler Klasse:
public class CustomExceptionHandler : Thread.IUncaughtExceptionHandler
{
public IntPtr Handle { get; private set; }
public CustomExceptionHandler(Thread.IUncaughtExceptionHandler exceptionHandler)
{
Handle = exceptionHandler.Handle;
}
public void UncaughtException(Thread t, Throwable e)
{
// Submit exception details to a server
...
// Display error message for local debugging purposes
Debug.WriteLine(e);
}
public void Dispose()
{
throw new NotImplementedException();
}
}
Dann habe ich diese Klasse, um den DefaultUncaughtExceptionHandler in meinem Aktivität:
// Set the default exception handler to a custom one
Thread.DefaultUncaughtExceptionHandler = new CustomExceptionHandler(
Thread.DefaultUncaughtExceptionHandler);
Ich weiß nicht, was ist falsch mit diesem Ansatz, es hat gebaut, aber ich habe eine ungültig CastException zur Laufzeit.
Ich habe die gleichen Thread.IUncaughtExceptionHandler Schnittstellentypen für meine CustomExceptionHandler und der DefaultUncaughtExceptionHandler, aber warum bin ich diesen Fehler? Bitte erleuchte mich. Vielen Dank.
Versuchen Sie eine 'JavaCast' hier. https://developer.xamarin.com/api/member/Android.Runtime.Extensions.JavaCast%7BTResult%7D/p/Android.Runtime.IJavaObject/ –
@JonDouglas Ich habe es verwendet. Thread.DefaultUncaughtExceptionHandler = Erweiterungen.JavaCast ( neuer CustomExceptionHandler (Thread.DefaultUncaughtExceptionHandler)); Aber immer noch bekomme ich den gleichen Fehler. –
arvicx