我想在我的Android应用程序(python 2.7& kivy)中从服务开始一项活动。我使用startActivity方法但它不起作用。
当我运行应用程序并输入" buildozer android logcat" 时,我看到了:
File" jnius_export_class.pxi",第900行,在jnius.jnius.JavaMultipleMethod .__ call __(jnius / jnius.c:24581) JavaException:没有与您的参数匹配的方法
我的部分服务代码:
resources :products, only:[:index] do
resources :orders, :path => 'order', only:[:new, :create],
path_names: {new: ""}
end
如果我将它移动到主活动并使用PythonActivity.mActivity,它可以工作。但我需要从服务中精确运行此代码。 请帮忙。
答案 0 :(得分:0)
首先,对于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)