Фильтры KIVY + Android - PullRequest
       6

Фильтры KIVY + Android

0 голосов
/ 11 ноября 2018

Я очень плохо знаком с kivy и python, так что я мог бы погрузиться в глубокий конец, но я пытаюсь выяснить, как получить намерение андроида и использовать его в простом приложении kivy?

Так что я сейчас пытаюсь выяснить основные элементы дизайна и просто, как заставить вещи работать. Я хочу иметь возможность щелкнуть ссылку (например) и запустить мое приложение, а затем делать что-то, ничего сложного, просто нужно иметь возможность получить ссылку, которая передается на него с Android.

Я понял, что это связано с фильтрами намерений Android, и добавил соответствующий файл "intent_filters.xml", чтобы это работало. Поэтому, нажав на ссылку, я запустлю мое приложение, и это хорошо.

Однако я не могу понять, как разобрать информацию, передаваемую в приложение в Android. Итак, ниже приведено очень простое приложение с кнопкой, и я просто хочу обновить кнопку, чтобы увидеть, уловили ли мои намерения или нет.

В настоящее время нажатие кнопки приводит к закрытию приложения. Когда я проверяю это на виртуальной машине Kivy, которую я использую для компиляции apk, он закрывается с сообщением о том, что «платформа» не определена (что имеет смысл, поскольку ее нет в Android), но это не сильно помогает в тестировании или отслеживании того, как заставить это работать.

Я читал кое-что, что, по-видимому, говорит о том, что это невозможно с kivy? Кто-нибудь может подтвердить, возможно ли это в киве и если да, то как? (Я пробовал вариации на активность. *

from kivy.app import App

from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout


class TutorialApp(App):

    def build(self):
        self.gen_btn = Button(text='Initial',
                         size_hint=(.90, .10),
                         pos=(5, 5),
                         font_size=50)
        self.gen_btn.bind(on_press=self.update_tutorialapp)
        l = BoxLayout()
        l.add_widget(self.gen_btn)
        return l

    def update_tutorialapp(self, *args):
        st = update_button()
        st.update_Message(self)

class update_button():

    def update_Message(self, source):
        source.gen_btn.text = "the event was called"
        if platform=="android":
            from jnius import cast
            from jnius import autoclass
            import android
            import android.activity

            # test for an intent passed to us
            PythonActivity = autoclass('org.renpy.android.PythonActivity')
            activity = PythonActivity.mActivity
            intent = activity.getIntent()
            intent_data = intent.getData()

            source.gen_btn.text = PythonActivity.getIntent().getStringExtra(Intent.EXTRA_TEXT)

if __name__ == "__main__":
    TutorialApp().run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...