Это соответствующий код из файла MainActivity.java:
Код: Выделить всё
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);
}
Код: Выделить всё
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()
E/AndroidRuntime: java.lang.RuntimeException: невозможно начать действие
ComponentInfo{com.example.myapp/org.beeware.android.MainActivity}:
com.chaquo.python.PyException: ModuleNotFoundError: нет модуля с именем
'chaquopy'
Похоже, что модуля с именем chaquopy не существует. Я пытался установить его с помощью pip, но он не найден. Но как мне получить доступ к методам MainActivity из Python? Какой модуль следует включить?
Я нашел здесь документацию, в которой говорится: «Модуль java предоставляет возможности для использования классов Java и объектов из кода Python». Я пытался импортировать java булочку, она тоже не найдена... Кажется, на этой странице рассказывается, как получить доступ к Java из Python, но я не понимаю всего, что там есть, потому что это мое первое взаимодействие с Java и Android...
Подробнее здесь: https://stackoverflow.com/questions/788 ... rom-python
Мобильная версия