2

我想从不同的 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

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

打开 Twitter 客户端的另一个问题的答案效果很好,但我不知道如何扩展该代码。例如,您将如何添加脚本路径,以及将行放在哪里com.googlecode.android_scripting/.activity.ScriptingLayerServiceLauncher

4

2 回答 2

2

此函数将从另一个脚本中启动任何 SL4A 脚本。

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

第二个参数是可选的,应该是一个布尔值。它默认为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)

这里有这段代码的要点。

于 2013-05-23T05:18:43.857 回答
0

经过无数次失败的尝试后,我现在可以在 Ruby 中使用它了——与在 Python 中相比,我更容易以这种方式生成 JSON 附加内容。

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

在脚本中,这称为“com.googlecode.android_scripting.activity.ScriptingLayerServiceLauncher”,不带斜线。离开斜线会导致 sl4a 崩溃。

[代码]

需要'android'需要'json/pure'

d=Android.new

脚本 = '/sdcard/sl4a/scripts/YOUR_SCRIPT'

数据 = {"com.googlecode.android_scripting.extra.SCRIPT_PATH"=>脚本}

extras = JSON.generate(数据)

d.startActivity('com.googlecode.android_scripting.action.LAUNCH_BACKGROUND_SCRIPT','','',data,true,'com.googlecode.android_scripting','com.googlecode.android_scripting.activity.ScriptingLayerServiceLauncher')

[/代码]

我希望这有帮助!

于 2013-04-06T13:48:59.380 回答