Einheit: Rufen Sie android-Funktion von Unity

AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");

AndroidJavaObject activity = unityPlayer.GetStatic("currentActivity");

activity.CallStatic("testMethod");

Dies ist, wie ich call Android-statische Funktion, ohne argument, und es funktioniert perfekt. Aber ich habe Problem, wenn ich versuche zu nennen, die nicht-statische Funktion mit Argumenten.

Ich versuche es so nennen mag:

activity.Call("testMethod", "testString");

Aber Android wirft Ausnahme:

AndroidJavaException: java.lang.NoSuchMethodError: no non-static method "L**myActivity**(Ljava/lang/String;)V"

Was ich falsch mache ? Was ist der Unterschied zwischen statischen und nicht-statischen Aufruf ? Ich bin mit der gleichen Aktivität. Hier ist mein java-Methode:

public void testMethod(String data) { }

UPDATE

War schließlich in der Lage zu laufen, nicht statische Methode:

activity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
                                                                   {
                    activity.Call("testMethod", "testString");
            }));

Seltsam, dass das nicht funktioniert ohne runOnUIThread...Wahrscheinlich habe ich etwas falsch.

Kann ich sehen, Ihre native android-code? Ich habe das gleiche Problem und ich bin nicht sicher, warum Sie genannt currentActivity
welche technologischen Barrieren steht zwischen uns und einer mehr freundlicher API zu tun?

InformationsquelleAutor Jim | 2014-12-18

Schreibe einen Kommentar