public static IntPtr GetObjectArrayElement(IntPtr array, int index) { try { return(AndroidJNI.GetObjectArrayElement(array, index)); } finally { AndroidJNISafe.CheckException(); } }
public static IntPtr GetObjectArrayElement(IntPtr array, int index) { IntPtr objectArrayElement; try { objectArrayElement = AndroidJNI.GetObjectArrayElement(array, index); } finally { CheckException(); } return(objectArrayElement); }
public static ArrayType ConvertFromJNIArray <ArrayType>(IntPtr array) { Type elementType = typeof(ArrayType).GetElementType(); if (AndroidReflection.IsPrimitive(elementType)) { if (elementType == typeof(int)) { return((ArrayType)(object)AndroidJNISafe.FromIntArray(array)); } if (elementType == typeof(bool)) { return((ArrayType)(object)AndroidJNISafe.FromBooleanArray(array)); } if (elementType == typeof(byte)) { return((ArrayType)(object)AndroidJNISafe.FromByteArray(array)); } if (elementType == typeof(short)) { return((ArrayType)(object)AndroidJNISafe.FromShortArray(array)); } if (elementType == typeof(long)) { return((ArrayType)(object)AndroidJNISafe.FromLongArray(array)); } if (elementType == typeof(float)) { return((ArrayType)(object)AndroidJNISafe.FromFloatArray(array)); } if (elementType == typeof(double)) { return((ArrayType)(object)AndroidJNISafe.FromDoubleArray(array)); } if (elementType == typeof(char)) { return((ArrayType)(object)AndroidJNISafe.FromCharArray(array)); } return(default(ArrayType)); } if (elementType == typeof(string)) { int arrayLength = AndroidJNISafe.GetArrayLength(array); string[] array2 = new string[arrayLength]; for (int i = 0; i < arrayLength; i++) { IntPtr objectArrayElement = AndroidJNI.GetObjectArrayElement(array, i); array2[i] = AndroidJNISafe.GetStringUTFChars(objectArrayElement); AndroidJNISafe.DeleteLocalRef(objectArrayElement); } return((ArrayType)(object)array2); } if (elementType == typeof(AndroidJavaObject)) { int arrayLength2 = AndroidJNISafe.GetArrayLength(array); AndroidJavaObject[] array3 = new AndroidJavaObject[arrayLength2]; for (int j = 0; j < arrayLength2; j++) { IntPtr objectArrayElement2 = AndroidJNI.GetObjectArrayElement(array, j); array3[j] = new AndroidJavaObject(objectArrayElement2); AndroidJNISafe.DeleteLocalRef(objectArrayElement2); } return((ArrayType)(object)array3); } throw new Exception("JNI: Unknown generic array type '" + elementType + "'"); }
public static ArrayType ConvertFromJNIArray <ArrayType>(IntPtr array) { System.Type elementType = typeof(ArrayType).GetElementType(); if (AndroidReflection.IsPrimitive(elementType)) { if (elementType == typeof(int)) { return((ArrayType)AndroidJNISafe.FromIntArray(array)); } if (elementType == typeof(bool)) { return((ArrayType)AndroidJNISafe.FromBooleanArray(array)); } if (elementType == typeof(byte)) { return((ArrayType)AndroidJNISafe.FromByteArray(array)); } if (elementType == typeof(short)) { return((ArrayType)AndroidJNISafe.FromShortArray(array)); } if (elementType == typeof(long)) { return((ArrayType)AndroidJNISafe.FromLongArray(array)); } if (elementType == typeof(float)) { return((ArrayType)AndroidJNISafe.FromFloatArray(array)); } if (elementType == typeof(double)) { return((ArrayType)AndroidJNISafe.FromDoubleArray(array)); } if (elementType == typeof(char)) { return((ArrayType)AndroidJNISafe.FromCharArray(array)); } return(default(ArrayType)); } if (elementType == typeof(string)) { int arrayLength = AndroidJNISafe.GetArrayLength(array); string[] strArray = new string[arrayLength]; for (int index = 0; index < arrayLength; ++index) { IntPtr objectArrayElement = AndroidJNI.GetObjectArrayElement(array, index); strArray[index] = AndroidJNISafe.GetStringUTFChars(objectArrayElement); AndroidJNISafe.DeleteLocalRef(objectArrayElement); } return((ArrayType)strArray); } if (elementType != typeof(AndroidJavaObject)) { throw new Exception("JNI: Unknown generic array type '" + (object)elementType + "'"); } int arrayLength1 = AndroidJNISafe.GetArrayLength(array); AndroidJavaObject[] androidJavaObjectArray = new AndroidJavaObject[arrayLength1]; for (int index = 0; index < arrayLength1; ++index) { IntPtr objectArrayElement = AndroidJNI.GetObjectArrayElement(array, index); androidJavaObjectArray[index] = new AndroidJavaObject(objectArrayElement); AndroidJNISafe.DeleteLocalRef(objectArrayElement); } return((ArrayType)androidJavaObjectArray); }