アプリからKivyLauncherを呼び出す - Kivy Advent Calendar 2013

Android/pyjniusばっかりは飽きたって? ごめんなさい。今回で最後にします。
KivyLauncherを使っていて今とは別のアプリを実行したい場合、終了させるとHome画面に戻って、再度KivyLauncherを立ち上げないといけないですよね。
結構気になりますよね? はい。
要はKivyアプリからKivyLauncher自体を立ち上げてしまえばいいんです。重複では起動しないので問題は起こらないはず...たぶん?


(/sdcard/kivy/back/)

android.txt お約束
main.py プログラム本体

(main.py)

from kivy.uix.button import Button
from kivy.app import App
from jnius import autoclass, cast

class BackApp(App):

    PythonActivity = autoclass('org.renpy.android.PythonActivity')
    Intent = autoclass('android.content.Intent')
    Uri = autoclass('android.net.Uri')

    def back_to_launcher(self, instance):
        intent = self.Intent("org.renpy.LAUNCH", self.Uri.parse("kivy:/sdcard/kivy/"))
        intent.setClassName("org.kivy.pygame", "org.renpy.android.ProjectChooser")
        activity = cast('android.app.Activity', self.PythonActivity.mActivity)
        activity.startActivity(intent)

    def build(self):
        button = Button(text='back to launcher')
        button.bind(on_press=self.back_to_launcher)
        return button

if __name__ == '__main__':
    BackApp().run()

解説

  • 本当は「Kivyアプリ」から「別のKivyアプリ」を起動できないか試していたんですけど、うまくいかなかったんですね。でもランチャ部分 (org.renpy.android.ProjectChooser) なら実行できたので、まあ予定変更ということで...