使用android app进行子进程

时间:2016-05-17 14:39:08

标签: python kivy buildozer

我用Python和Kivy制作了一个应用程序。 Générated与buildozer建立了一个apk文件。

在这个应用程序中,我生成* .xlsx文件。我想添加一个按钮,使用google Sheets应用程序直接打开xlsx文件。

但我不知道如何做到这一点。我知道python上的suprocess系统,但我怎么能调用android应用程序?

我在谷歌搜索但我没有找到任何信息。

你有个主意吗?

使用新代码编辑帖子:

编辑2:我找到了解决方案。我发布了结果代码。

## Call pyjnius for call intent
# Request the kivy activity instance
PythonActivity = autoclass('org.renpy.android.PythonActivity')
# Get the Android Intent class
Intent = autoclass('android.content.Intent')
## get the URI android
Uri = autoclass('android.net.Uri')
## Get the File object
File = autoclass('java.io.File')
## String object
String = autoclass('java.lang.String')

#create a new Android Intent
p__intent = Intent()
# Set the action of the intent
p__intent.setAction(Intent.ACTION_VIEW)
# Set the intent myme type file
p__intent.setDataAndType(Uri.fromFile(File(p__current_file_month)),String("application/vnd.ms-excel"))
## Set extra to put the filename
p__intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)

p__currentActivity = cast('android.app.Activity', PythonActivity.mActivity)
# Run the intent activity 
p__currentActivity.startActivity(p__intent)

此代码正确打开* .xlsx文件。

非常感谢提前

1 个答案:

答案 0 :(得分:1)

您不想(并且实际上不能)使用子流程。相反,您必须使用pyjnius创建一个Android Intent,其中包含有关您的任务的信息,Android可以使用该信息为用户构建可用应用程序列表。

对于发送意图的电子邮件,您可以找到有关此here的示例,但详细信息应该非常相似。您可能还想了解一下Android api,了解一下发生了什么。