我如何使用Python Kivy/Jnius的服务中使用起始方法



我想在我的Android应用程序(Python 2.7& Kivy)中从 Service 启动活动。我对此使用起始方法,但行不通。

当我运行应用程序并键入" buildozer android logcat" 时,我看到了:

文件" jnius_export_class.pxi",第900行,在jnius.jnius.jnius.javamultiplemethod .__ call__(jnius/jnius/jnius.c:24581)Javaexception:没有匹配您的参数的方法

我服务代码的一部分:

    from jnius import autoclass, cast

    PythonService = autoclass("org.renpy.android.PythonService")
    activity = cast("android.app.Service", PythonService.mService)
    manager = activity.getPackageManager()
    Intent = autoclass("android.content.Intent")
    intent = manager.getLaunchIntentForPackage("com.MyTest.AndroidTest")
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    activity.startActivity(intent) ### Exception in this line

如果我将其移至主要活动并使用Pythonactivity。但是我需要精确地从 Service 运行此代码。请帮助。

首先,对于kivy,它会变为org.kivy.android.pythonactivity而不是renpy。(您正确启动活动;)取自在线某个地方。我只是不记得在哪里。学分应交给其他人。无论如何,这是示例代码。

PythonActivity =  autoclass("org.kivy.android.PythonActivity") 
Intent = autoclass('android.content.Intent')
pm = autoclass('android.content.pm.PackageManager')
activity = PythonActivity.mActivity
pm_ = activity.getPackageManager()
array_pkg = pm_.getInstalledApplications(pm.GET_META_DATA).toArray()
print "ninstalled app:"
selected_pkg = []
list_exitsting = []
for i in array_pkg:
    if "/data/app/" not in getattr(i, "publicSourceDir"):
        continue
    selected_pkg.append(i)
    print "packageName = " + getattr(i, "packageName")
    list_exitsting.append(getattr(i, "packageName"))
print "nget app intent"
app_to_launch = "com.google.android.youtube"
for i in selected_pkg:
    if app_to_launch == getattr(i, "packageName"):
        app_intent = pm_.getLaunchIntentForPackage(getattr(i, "packageName"))
        app_intent.setAction(Intent.ACTION_VIEW)
        app_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        print "launch app: " + app_to_launch
        activity.startActivity(app_intent)

最新更新