public static IntPtr GetMethodID(IntPtr javaClass, string methodName, string signature) { bool isStatic = false; return(AndroidJNIHelper.GetMethodID(javaClass, methodName, signature, isStatic)); }
public static string GetSignature(object obj) { if (obj == null) { return("Ljava/lang/Object;"); } Type type = (!(obj is Type)) ? obj.GetType() : ((Type)obj); if (type.IsPrimitive) { if (type.Equals(typeof(int))) { return("I"); } if (type.Equals(typeof(bool))) { return("Z"); } if (type.Equals(typeof(byte))) { return("B"); } if (type.Equals(typeof(short))) { return("S"); } if (type.Equals(typeof(long))) { return("J"); } if (type.Equals(typeof(float))) { return("F"); } if (type.Equals(typeof(double))) { return("D"); } if (type.Equals(typeof(char))) { return("C"); } } else { if (type.Equals(typeof(string))) { return("Ljava/lang/String;"); } // if (type.Equals(typeof(AndroidJavaRunnable))) // { // return "Ljava/lang/Runnable;"; // } if (type.Equals(typeof(AndroidJavaObject))) { if (obj == type) { return("Ljava/lang/Object;"); } AndroidJavaObject androidJavaObject = (AndroidJavaObject)obj; AndroidJavaObject androidJavaObject2; object[] args = new object[0]; IntPtr cachedMethodID = AndroidJNIHelper.GetMethodID <AndroidJavaObject>(androidJavaObject.GetRawClass(), "getClass", args, false); jvalue[] args2 = AndroidJNIHelper.CreateJNIArgArray(args); IntPtr pobj = AndroidJNI.CallObjectMethod(androidJavaObject.GetRawObject(), cachedMethodID, args2); androidJavaObject2 = new AndroidJavaObject(pobj); string retStr; IntPtr cachedMethodID2 = AndroidJNIHelper.GetMethodID <AndroidJavaObject>(androidJavaObject.GetRawClass(), "getName", args, false); retStr = AndroidJNI.CallStringMethod(androidJavaObject2.GetRawObject(), cachedMethodID2, args2); return("L" + retStr + ";"); } else { if (typeof(Array).IsAssignableFrom(type)) { if (type.GetArrayRank() != 1) { Debug.Warning("JNI: System.Array in n dimensions is not allowed"); return(string.Empty); } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append('['); stringBuilder.Append(_AndroidJNIHelper.GetSignature(type.GetElementType())); return(stringBuilder.ToString()); } else { Debug.Warning(string.Concat(new object[] { "JNI: Unknown signature for type '", type, "' (obj = ", obj, ") ", (type != obj) ? "instance" : "equal" })); } } } return(string.Empty); }