Wie kann ich eine Java-Klassenmethode von Python aus aufrufen?Python

Python-Programme
Guest
 Wie kann ich eine Java-Klassenmethode von Python aus aufrufen?

Post by Guest »

Ich erstelle eine Android-App in Python mit Briefcase von BeeWare, die einen Dienst starten muss. Und ich habe diesen Code...
Dies ist der relevante Code aus der Datei MainActivity.java:

Code: Select all

package org.beeware.android;

import com.chaquo.python.Kwarg;
import com.chaquo.python.PyException;
import com.chaquo.python.PyObject;
import com.chaquo.python.Python;
import com.chaquo.python.android.AndroidPlatform;

public class MainActivity extends AppCompatActivity {

public static MainActivity singletonThis;

protected void onCreate(Bundle savedInstanceState) {
singletonThis = this;
... start Python
}

public void startMyService() {
Intent intent = new Intent(this, MyService.class);
startService(intent);
}
Und das ist der relevante Code von app.py, den meine Intuition erfunden hat:

Code: Select all

from chaquopy import Java

class Application(toga.App):

...UI code here

def start_tcp_service(self, widget):
msg = 'START pressed !'
print(msg); self.LogMessage(msg)
self.CallJavaMethod('startMyService')

def CallJavaMethod(self, method_name):
MainActClass = Java.org.beeware.android.MainActivity
MainActivity = MainActClass.singletonThis
method = getattr(MainActivity, method_name)
method()
Wenn ich jetzt versuche, das Projekt mit briefcase run android -u auf meinem Android-Telefon über die USB-Debugging-Brücke auszuführen, erhalte ich die Fehlermeldung:

E/AndroidRuntime: java.lang.RuntimeException: Aktivität kann nicht gestartet werden
ComponentInfo{com.example.myapp/org.beeware.android.MainActivity}:com.chaquo.python.PyException: ModuleNotFoundError: Kein Modul namens
'chaquopy'

Es scheint, dass es kein Modul gibt mit Namen chaquopy. Ich habe versucht, es mit pip zu installieren, aber es wurde nicht gefunden. Aber wie kann ich dann von Python aus auf die MainActivity-Methoden zugreifen? Welches ist das richtige Modul, das eingebunden werden muss?
Ich habe hier eine Dokumentation gefunden, in der es heißt: „Das Java-Modul bietet Funktionen zur Verwendung von Java-Klassen und -Objekten aus Python-Code.“ Ich habe versucht, Java zu importieren, aber das wurde auch nicht gefunden ... Es scheint, dass auf dieser Seite erklärt wird, wie man von Python aus auf Java zugreift, aber ich verstehe nicht alles, was da steht, weil dies meine erste Interaktion ist mit Java und Android...

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post