private static void Init()
 {
     try {
         mCurrentActivity = JavaObject.GetStatic <Activity>("com/unity3d/player/UnityPlayer", "currentActivity");
     }
     catch (Exception ex) {
         Debug.LogError("ex: " + ex.Message + " => " + ex.StackTrace);
     }
 }
        public static IntPtr ConvertToJNIArray <TElement>(Array array)
        {
            System.Type elementType = typeof(TElement);

            System.Diagnostics.Debug.Assert(elementType != null, "elementType != null");
            if (elementType.IsSubclassOf(typeof(JavaObject)))
            {
                int      length1 = array.GetLength(0);
                IntPtr[] array2  = new IntPtr[length1];
                IntPtr   class1  = FindClass(GetClass(elementType));
                IntPtr   type    = IntPtr.Zero;
                for (int index = 0; index < length1; ++index)
                {
                    JavaObject obj = array.GetValue(index) as JavaObject;
                    if (obj != null)
                    {
                        array2[index] = obj.RawObject;
                        IntPtr rawClass = obj.RawClass;
                        if (type != rawClass)
                        {
                            type = !(type == IntPtr.Zero) ? class1 : rawClass;
                        }
                    }
                    else
                    {
                        array2[index] = IntPtr.Zero;
                    }
                }
                IntPtr num = JNISafe.ToObjectArray(array2, type);
                JNISafe.DeleteLocalRef(class1);

                return(num);
            }

            return(AndroidJNIHelper.ConvertToJNIArray(array));
        }