【问题标题】:no static method with name='getMessage' signature='()Ljava/lang/String;' in class Ljava.lang.Object;没有名称='getMessage'签名='()Ljava/lang/String;'的静态方法在类 Ljava.lang.Object 中;
【发布时间】:2017-05-08 17:59:20
【问题描述】:

正在尝试将 Unity 插件写入 Android Studio...

public class My_Plugin extends UnityPlayerActivity {

    private Context mContext;

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        mContext = this;
        TelephonyManager telephonyManager = ((TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE));
        getMessage(telephonyManager.getSimOperatorName());
    }

   public static String getMessage(String message){
       return message;
   }
}

1 个类作为 AAR 库导入。

在 Unity 中只有 2 行代码。见下文

AndroidJavaClass pluginClass = new AndroidJavaClass("com.eppz.myplugin.My_Plugin");
        GetComponent<Text>().text = pluginClass.CallStatic<string>("getMessage");

和错误日志:

I/Unity: AndroidJavaException: java.lang.NoSuchMethodError: no static method with name='getMessage' signature='()Ljava/lang/String;' in class Ljava.lang.Object;
                                          java.lang.NoSuchMethodError: no static method with name='getMessage' signature='()Ljava/lang/String;' in class Ljava.lang.Object;
                                              at com.unity3d.player.ReflectionHelper.getMethodID(Unknown Source)
                                              at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
                                              at com.unity3d.player.UnityPlayer.a(Unknown Source)
                                              at com.unity3d.player.UnityPlayer$c$1.handleMessage(Unknown Source)
                                              at android.os.Handler.dispatchMessage(Handler.java:98)
                                              at android.os.Looper.loop(Looper.java:135)
                                              at com.unity3d.player.UnityPlayer$c.run(Unknown Source)
                                            at UnityEngine.AndroidJNISafe.CheckException () [0x00000] in <filename unknown>:0 
                                            at UnityEngine.AndroidJNISafe.CallStaticObjectMethod (IntPtr clazz, IntPtr methodID, UnityEngine.jvalue[] args) [0x00000] in <filename unknown>:0 
                                            at UnityEngine.AndroidReflection.GetMethodMember (IntPtr jclass, System.String methodName, Syst

【问题讨论】:

    标签: java android unity3d plugins


    【解决方案1】:

    Java 中的getMessage 函数采用字符串参数。您必须使用字符串参数调用它。

    pluginClass.CallStatic<string>("getMessage");
    

    应该是:

    pluginClass.CallStatic<string>("getMessage", "my parameter");
    

    【讨论】:

      猜你喜欢
      • 2017-09-26
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      • 2018-06-07
      相关资源
      最近更新 更多