java.lang.NoSuchMethodError: no non-static method with name='onCreate' signature='()V' in class Ljava.lang.Object;

У меня есть Unity приложение, которое использует java плагин. Вот мой java класс:

   public class MyLibrary extends Activity 
  {
  @Override
  protected void onCreate(Bundle savedInstanceState) 
   {

       super.onCreate(savedInstanceState);

       Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
       startActivity(intent);
   }

  }

этот код должен открывать приложение камеры на моем смартфоне Android. Итак, в моем приложении Unity есть кнопка, которая вызывает java-метод ... Когда я нажимаю кнопку, у меня есть это в logcat:

 2021-05-01 22:20:15.010 15532-15576/? E/Unity: AndroidJavaException: java.lang.NoSuchMethodError: no 
non-static method with name='onCreate' signature='()V' in class Ljava.lang.Object;
java.lang.NoSuchMethodError: no non-static method with name='onCreate' signature='()V' in class 
Ljava.lang.Object;
at com.unity3d.player.ReflectionHelper.getMethodID(Unknown Source:162)
at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
at com.unity3d.player.UnityPlayer.access$300(Unknown Source:0)
at com.unity3d.player.UnityPlayer$e$1.handleMessage(Unknown Source:95)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:241)
at com.unity3d.player.UnityPlayer$e.run(Unknown Source:20)
at UnityEngine.AndroidJNISafe.CheckException () [0x00000] in <00000000000000000000000000000000>:0 
at UnityEngine.AndroidJNISafe.CallStaticObjectMethod (System.IntPtr clazz, System.IntPtr methodID, 
UnityEngine.jvalue[] args) [0x00000] in <00000000000000000000000000000000>:0 

вот мой C# код:

public class StartPluginToLoadCameraByButton : MonoBehaviour
{
    public Button button;
    public GameObject ButtonOjbect;


   private void Start()
  {

      button = GetComponent<Button>();
      button.onClick.AddListener(StartPlugin);
  }

   public void StartPlugin()
  {

    var plugin = new AndroidJavaClass("com.example.workinglibrary.MyLibrary");
    plugin.Call("onCreate");

  }

}

после того как я не нашел решения моей проблемы в интернете, я задал этот вопрос на stackoverflow англ. версии, и там мне посоветовали сделать следующее: 1) заменить protected void onCreate(Bundle savedInstanceState) на public void onCreate(Bundle savedInstanceState) 2) также в то время когда я вызываю мой java метод из C# скрипта, я вызываю просто по названию метода, но в моем java скрипте он принимает один аргумент... в официальной документации юнити написано: public void Call(string methodName, params object[] args); - ну первое это имя функции, а второе - это аргумент... Здесь у меня тоже возникла проблема, так как я не понимаю как правильно записать onCreate(Bundle savedInstanceState) в C#... видел как вызывают просто методы, без аргументов, но здесь не так... пожалуйста, мне бы пример увидеть, как этот аргумент записывать вместе с вызовом метода, и поможет ли это вообще решить эту ошибку что у меня в logcat? заранее спасибо!


Ответы (0 шт):