从SL4A脚本启动SL4A脚本

时间:2013-04-05 02:09:09

标签: android python sl4a start-activity

我想从不同的SL4A脚本中启动后台SL4A脚本(在远程设备上)。我可以通过运行这样的东西从终端启动脚本:

$ am start -a \
com.googlecode.android_scripting.action.LAUNCH_BACKGROUND_SCRIPT -n \
com.googlecode.android_scripting/.activity.ScriptingLayerServiceLauncher -e \
com.googlecode.android_scripting.extra.SCRIPT_PATH /sdcard/sl4a/scripts/main.py

我无法将其转换为Python中的startActivity调用。

a different question关于打开Twitter客户端的答案很有效,但我不知道如何扩展该代码。例如,您将如何添加脚本路径,以及将行com.googlecode.android_scripting/.activity.ScriptingLayerServiceLauncher放在哪里?

2 个答案:

答案 0 :(得分:2)

此功能将从另一个脚本中启动任何SL4A脚本。

第一个参数应该是您要启动的脚本的路径。该脚本可以是您安装了解释器的任何语言。

第二个参数是可选的,应该是一个bool。它默认为False。它控制终端是否可见,因此您可以看到输出和错误。它不会影响脚本是否具有UI。

from android import Android
droid = Android()

def launch_script(path, visible=False):

    visibilty   = 'FORE' if visible else 'BACK'
    activity    = 'com.googlecode.android_scripting.action.LAUNCH_{0}GROUND_SCRIPT'.format(visibilty)
    extras      = {'com.googlecode.android_scripting.extra.SCRIPT_PATH': path}
    packagename = 'com.googlecode.android_scripting'
    classname   = 'com.googlecode.android_scripting.activity.ScriptingLayerServiceLauncher'
    intent      = droid.makeIntent(activity, None, None, extras, None, packagename, classname).result

    droid.startActivityIntent(intent)

gist for this code here

答案 1 :(得分:0)

经过多次尝试失败之后,我现在已经在Ruby中工作了 - 我用这种方式比用Python更容易生成JSON附加功能。

重要!   在命令行版本中,您调用“com.googlecode.android_scripting / .activity.ScriptingLayerServiceLauncher”

在脚本中,这称为“com.googlecode.android_scripting.activity.ScriptingLayerServiceLauncher”,没有斜杠。离开斜线坠毁sl4a。

[代码]

要求'android' 要求'json / pure'

d = Android.new

script ='/ sdcard / sl4a / scripts / YOUR_SCRIPT'

data = {“com.googlecode.android_scripting.extra.SCRIPT_PATH”=> script}

extras = JSON.generate(data)

d.startActivity( 'com.googlecode.android_scripting.action.LAUNCH_BACKGROUND_SCRIPT', '', '',数据,真实, 'com.googlecode.android_scripting', 'com.googlecode.android_scripting.activity.ScriptingLayerServiceLauncher')< / p>

[/代码]

我希望这有帮助!