使用JNI我们可以将自定义数据类型从Java传递到C(反之亦然)吗?我看到原始数据类型到C中的类型的映射,但是我们不能确定是否可以发送我们自己的数据类型(例如发送或返回一个Employee对象或其他东西!).
我试图从C#调用Java方法,它从java中调用如下:
EgamePay.pay(thisActivity, payAlias, new EgamePayListener() {
@Override
public void paySuccess(String alias) {
}
@Override
public void payFailed(String alias, int errorInt) {
}
@Override
public void payCancel(String alias) {
}
});
Run Code Online (Sandbox Code Playgroud)
前两个参数都可以,但是如何在C#中传递EgamePayListner?简单地创建具有相同功能的C#类将无法正常工作......
这是我目前正在做的事情:
using (AndroidJavaClass jc = new AndroidJavaClass("cn.egame.terminal.smspay.EgamePay"))
{
System.IntPtr cls_Activity = AndroidJNI.FindClass("com/unity3d/player/UnityPlayer");
System.IntPtr fid_Activity = AndroidJNI.GetStaticFieldID(cls_Activity, "currentActivity", "Landroid/app/Activity;");
object[] p = { fid_Activity, "payAlias", new EgamePayListener() };
jc.CallStatic("pay", p);
}
..
class EgamePayListener
{
public void paySucess(string alias)
{
}
public void payFailed(string alians, int errorInt)
{
}
public …Run Code Online (Sandbox Code Playgroud) 我想将java类对象传递给JNI方法,我想在JNI方法中调用几个方法,如下所示.
有没有人有像下面这样的例子?
class JavaClassParameter{
void javaMethodTobeCalledInJNI(){
...java source...
}
}
class MainJavaClass{
void somemethod(){
JavaClassParameter object = new JavaClassParameter();
JNIMethod(object);
}
native void JNIMethod(JavaClassParameter object);
}
// C++ code
void JNIMethod(object){
object->javaMethodTobeCalledInJNI();
}
Run Code Online (Sandbox Code Playgroud)