Skip to content

Instantly share code, notes, and snippets.

@arturaz
Created October 7, 2016 11:18
Show Gist options
  • Save arturaz/96f90a3443a0a8a89b1ae1e2dc4ac20e to your computer and use it in GitHub Desktop.
Save arturaz/96f90a3443a0a8a89b1ae1e2dc4ac20e to your computer and use it in GitHub Desktop.
/** Access to ```internal AndroidJavaObject(IntPtr jobject)``` */
static readonly Fn<object[], AndroidJavaObject> ajoCreator =
PrivateConstructor.creator<AndroidJavaObject>();
public static AndroidJavaObject cjoReturningNull(
this AndroidJavaObject javaObject, string methodName, params object[] args
) {
if (args == null) args = new object[1];
var methodId = AndroidJNIHelper.GetMethodID<AndroidJavaObject>(
javaObject.GetRawClass(), methodName, args, false
);
var jniArgArray = AndroidJNIHelper.CreateJNIArgArray(args);
try {
var returned = AndroidJNI.CallObjectMethod(
javaObject.GetRawObject(), methodId, jniArgArray
);
if (returned == IntPtr.Zero) return null;
else {
try { return ajoCreator(new object[] {returned}); }
finally { AndroidJNI.DeleteLocalRef(returned); }
}
}
finally {
AndroidJNIHelper.DeleteJNIArgArray(args, jniArgArray);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment