如何使用AndroidJavaObject.Call将参数传递给Java

本文关键字:参数传递 Java Call 何使用 AndroidJavaObject | 更新日期: 2023-09-27 18:27:19

所以我已经将我的项目与eclipse集成,并通过C#调用对我的Java类进行调用:

AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("Trigger");

现在,如果我不尝试在Trigger方法调用的同时传递任何参数,它会完美地调用该方法。但是,如果我尝试按如下方式传递变量:

jo.Call("Trigger", "my string");

unity引擎认为mystring参数指的是被调用方法的签名类型。如何将变量传递给我的Java方法?

除此之外,我如何将变量从java返回到C#?它会像一样简单吗

String myString = jo.Call("Trigger");

感谢您的提前帮助!

如何使用AndroidJavaObject.Call将参数传递给Java

试着这样做。它对我有效:

using(AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
     using(AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"))
     {
          jo.Call("Trigger", "my string");
     }
}

然后在Eclipse中执行:

void Trigger(String message)
{
     if(message=="my string")...
}

将变量从java发送到C#:在eclipse中:

UnityPlayer.UnitySendMessage("Android", "ReceiveVar", "some string");

其中"Android"是包含"ReceiveVar(string str)"函数的脚本,"some string"是您的变量(这是Unity部分)。