Как я могу вызвать метод класса Java из Python?Python

Программы на Python
Ответить
Anonymous
 Как я могу вызвать метод класса Java из Python?

Сообщение Anonymous »

Я создаю приложение для Android на Python, используя портфель от BeeWare, который должен запускать службу. И у меня есть этот код...
Это соответствующий код из файла 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);
}
А это соответствующий код из app.py, который подсказала моя интуиция:

Код: Выделить всё

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()
Теперь, когда я пытаюсь запустить проект с помощью портфеля run android -u на своем телефоне Android через мост отладки USB, я получаю сообщение об ошибке:

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»