【问题标题】:using JNI AndroidJNI.GetMethodID in unity with string parameters将 JNI AndroidJNI.GetMethodID 与字符串参数结合使用
【发布时间】:2012-06-06 12:44:51
【问题描述】:

我正在使用 android java 插件进行统一我试图从统一的 java 中调用函数并且它工作成功。

        cls_Activity = AndroidJNI.FindClass("com/unity3d/player/UnityPlayer");
        fid_Activity = AndroidJNI.GetStaticFieldID(cls_Activity, "currentActivity", "Landroid/app/Activity;");

        obj_Activity = AndroidJNI.GetStaticObjectField(cls_Activity, fid_Activity);
        kdataActivityClass = AndroidJNI.FindClass("com/kdata/unitytest/UnityUrlPlugin");
startAdsMethod = AndroidJNI.GetMethodID(kdataActivityClass,"getURL","(I)Ljava/lang/String;");

        jvalue[] myArray = new jvalue[1];
        myArray[0].i =testvalue;
        gui.text=   AndroidJNI.CallStaticStringMethod(obj_Activity, startAdsMethod, myArray);

使用上面的代码,我可以将 int 值传递给我的 java 函数并接收 string 值。当我试图传递一个字符串值时,它对我不起作用。问题出在此处,因为 JNI 中没有字符串类型

jvalue[] myArray = new jvalue[1];
myArray[0].i =testvalue;

【问题讨论】:

  • 你试过jstring吗?您的问题不是很清楚,并且您的部分代码丢失了
  • 我解决了兄弟,这就是我想要的 myArray[0].l = AndroidJNI.NewStringUTF(credentials);

标签: c# unity3d java-native-interface


【解决方案1】:

您要查找的数据类型是 jstring,在 JNI 中您可以使用 newStringnewStringUTF 创建它

【讨论】:

    【解决方案2】:

    我解决了兄弟,这就是我想要的 myArray[0].l=AndroidJNI.NewStringUTF(credentials);

    【讨论】:

      【解决方案3】:

      JNI 中没有字符串类型

      是的,有。它被称为'jstring'。

      【讨论】:

      • 问题是他使用Unity,并且由于某种原因他们暴露了jvalue而不是jstring。
      猜你喜欢
      • 2010-12-13
      • 2019-04-01
      • 1970-01-01
      • 2018-12-11
      • 2019-05-06
      • 2019-01-08
      • 1970-01-01
      • 2012-12-28
      • 2013-12-22
      相关资源
      最近更新 更多