在MonoDroid的项目,我需要能够调用私有方法的类。 从上一个相关的问题的答案 ,似乎这是可能在Java中通过反射:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import android.os.ParcelFileDescriptor;
...
ParcelFileDescriptor pipe[] = null;
try {
Method createPipeMethod = ParcelFileDescriptor.class.getDeclaredMethod("createPipe");
pipe = (ParcelFileDescriptor[]) createPipeMethod.invoke(null);
} catch (NoSuchMethodException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e);
}
我需要从MonoDroid的使用此代码。 不幸的是, java.lang.reflect
是不具备的MonoDroid的 。 然而,有人建议我可以从我的MonoDroid的项目中运行使用JNI这个代码。 所述Xamarin文档指出直列JNI是可能 ,而无需将整个JAR结合。 不幸的是, 更多的文件没有再多说什么了关于这个问题的。 此外, 在JNIEnv的文档是空白。
它看起来像我需要JNIEnv.CallVoidMethod()
但我不知道该怎么做。 我无法找到一个例子,或者更多的文件。
如何使用java.lang.reflect
在我MonoDroid的项目,或者以其他方式调用私有方法.createPipe
上ParcelFileDescriptor
?