UnityEngine.AndroidJNI.SetObjectArrayElement C# (CSharp) Method

SetObjectArrayElement() public static method

public static SetObjectArrayElement ( IntPtr array, int index, IntPtr obj ) : void
array System.IntPtr
index int
obj System.IntPtr
return void
		public static void SetObjectArrayElement(IntPtr array, int index, IntPtr obj){}
		public static void SetLongField(IntPtr obj, IntPtr fieldID, long val){}

Usage Example

コード例 #1
0
        public static IntPtr ConvertToJNIArray(Array array)
        {
            Type elementType = array.GetType().GetElementType();

            if (AndroidReflection.IsPrimitive(elementType))
            {
                if (elementType == typeof(int))
                {
                    return(AndroidJNISafe.ToIntArray((int[])array));
                }
                if (elementType == typeof(bool))
                {
                    return(AndroidJNISafe.ToBooleanArray((bool[])array));
                }
                if (elementType == typeof(byte))
                {
                    return(AndroidJNISafe.ToByteArray((byte[])array));
                }
                if (elementType == typeof(short))
                {
                    return(AndroidJNISafe.ToShortArray((short[])array));
                }
                if (elementType == typeof(long))
                {
                    return(AndroidJNISafe.ToLongArray((long[])array));
                }
                if (elementType == typeof(float))
                {
                    return(AndroidJNISafe.ToFloatArray((float[])array));
                }
                if (elementType == typeof(double))
                {
                    return(AndroidJNISafe.ToDoubleArray((double[])array));
                }
                if (elementType != typeof(char))
                {
                    return(IntPtr.Zero);
                }
                return(AndroidJNISafe.ToCharArray((char[])array));
            }
            if (elementType == typeof(string))
            {
                string[] strArray = (string[])array;
                int      size     = array.GetLength(0);
                IntPtr   clazz    = AndroidJNISafe.FindClass("java/lang/String");
                IntPtr   ptr2     = AndroidJNI.NewObjectArray(size, clazz, IntPtr.Zero);
                for (int j = 0; j < size; j++)
                {
                    IntPtr ptr3 = AndroidJNISafe.NewStringUTF(strArray[j]);
                    AndroidJNI.SetObjectArrayElement(ptr2, j, ptr3);
                    AndroidJNISafe.DeleteLocalRef(ptr3);
                }
                AndroidJNISafe.DeleteLocalRef(clazz);
                return(ptr2);
            }
            if (elementType != typeof(AndroidJavaObject))
            {
                throw new Exception("JNI; Unknown array type '" + elementType + "'");
            }
            AndroidJavaObject[] objArray = (AndroidJavaObject[])array;
            int length = array.GetLength(0);

            IntPtr[] ptrArray = new IntPtr[length];
            IntPtr   localref = AndroidJNISafe.FindClass("java/lang/Object");
            IntPtr   zero     = IntPtr.Zero;

            for (int i = 0; i < length; i++)
            {
                if (objArray[i] != null)
                {
                    ptrArray[i] = objArray[i].GetRawObject();
                    IntPtr rawClass = objArray[i].GetRawClass();
                    if (zero != rawClass)
                    {
                        if (zero == IntPtr.Zero)
                        {
                            zero = rawClass;
                        }
                        else
                        {
                            zero = localref;
                        }
                    }
                }
                else
                {
                    ptrArray[i] = IntPtr.Zero;
                }
            }
            IntPtr ptr7 = AndroidJNISafe.ToObjectArray(ptrArray, zero);

            AndroidJNISafe.DeleteLocalRef(localref);
            return(ptr7);
        }
All Usage Examples Of UnityEngine.AndroidJNI::SetObjectArrayElement
AndroidJNI