Native OnActivityResult (Google Play Games C++ für native Apps)

  • Ich habe die Google Play Games Services for C++ erfolgreich in meine native C++ App integriert. Abgesehen von einem Problem funktioniert alles tadellos. Wenn ich das Fenster in dem die Trophäen oder die Bestenlisten angezeigt werden einmal geschlossen habe, kann ich es nicht wieder öffnen. Der Grund dafür ist folgender:

    Code
    GamesNativeSDK: Trying to show UI while waiting for a result from an existing UI. Please ensure that OnActivityResult is forwarded to the Games C++ SDK from your Java activity. See android_support.h for more details.

    Nach einem Blick in das File android_support.h weiß ich, dass ich OnActivityResult von der Android Activity zum Google Play Games SDK weiterleiten muss.

    Ich weiß dass das etwa so möglich ist, wie es in diesem Beispiel gezeigt wird: https://github.com/googlesamples/android-nearby-cpp Hierfür wird allerdings die native Methode aus dem Java Code heraus aufgerufen.
    Die Sache ist nun die, dass ich das ganz gerne ohne Java Files machen würde. Im Moment benutze ich nur die native_activity aus dem NDK. Hat jemand eine Lösung für mein Problem?


    Danke schon mal im Vorraus!

  • Aber das macht doch Dein Beispielcode schon:

    C
    gpg::AndroidSupport::OnActivityResult(
            env, activity, request_code, result_code, data);
      }

    Was genau funktioniert denn daran nicht? 8|


    (Ob Du dafür jetzt in Java eine native Methode definierst oder das direkt in Deiner nativen Methode machst ist ja gehuppt wie gesprungen.)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • So einfach ist das eben leider nicht. An die Implementierung der native_activity im NDK komm ich ja nicht heran - die ist weggelibbed in einem .so file. Man müsste irgendwie von der native_activity ableiten und die OnActivityResult überschreiben. Aber genau da endet leider meine Weisheit :)

  • Nein, Du sollst die Methode nur aufrufen.
    Es ist eine Callback Methode, um deren Implementierung Du Dich nicht kümmern musst.
    Einfach nur aufrufen.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Okay, Dein Problem scheint zu sein, dass dieses Google Play Games Gelöt in Java realisiert ist und auf ein Resultat wartet, welches Du ihm nicht gibst.
    Du kannst es ihm auch nicht ohne Weiteres geben, da die Native Activity das Callback gar nicht bereitstellt.


    Da Du dafür keine Java Activity anlegen willst, gibt es wohl nur eine Möglichkeit:
    – Die Anzeige der Games Activity aus dem Games SDK irgendwo als Variable merken.
    – Im onResume, die gemäß Dokumentation weitergegeben wird, schauen, ob in der 'GamesActivity' Variable eine Referenz auf die Games Activity existiert
    – Falls ja dahin den Callback absetzen und die Variable leeren.


    Eventuell könnte es noch wichtig zu wissen sein, wie Du die einzelnen NativeGames Activities startest.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!