public static void CheckException()
{
IntPtr ptr = AndroidJNI.ExceptionOccurred();
if (ptr != IntPtr.Zero)
{
AndroidJNI.ExceptionClear();
IntPtr clazz = AndroidJNI.FindClass("java/lang/Throwable");
IntPtr ptr3 = AndroidJNI.FindClass("android/util/Log");
try
{
IntPtr methodID = AndroidJNI.GetMethodID(clazz, "toString", "()Ljava/lang/String;");
IntPtr ptr5 = AndroidJNI.GetStaticMethodID(ptr3, "getStackTraceString", "(Ljava/lang/Throwable;)Ljava/lang/String;");
string message = AndroidJNI.CallStringMethod(ptr, methodID, new jvalue[0]);
jvalue[] args = new jvalue[1];
args[0].l = ptr;
string javaStackTrace = AndroidJNI.CallStaticStringMethod(ptr3, ptr5, args);
throw new AndroidJavaException(message, javaStackTrace);
}
finally
{
DeleteLocalRef(ptr);
DeleteLocalRef(clazz);
DeleteLocalRef(ptr3);
}
}
}