从SL4A脚本启动SL4A脚本

2024-04-26 14:58:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从另一个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调用。在

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


Tags: 命令脚本com终端远程scriptactionactivity
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。在

在多次失败的尝试之后,我现在在Ruby中实现了这一点——用这种方法生成JSON附加文件比用Python更容易。在

重要! 在命令行版本中,可以调用“com.googlecode.android\u脚本/.activity.ScriptingLayerServiceLauncher““

在脚本中,这称为“com.googlecode.android\u脚本.activity.ScriptingLayerServiceLauncher“,没有斜杠。从斜线出发撞毁了sl4a

[代码]

需要“android” 需要“json/pure”

d=Android.new在

script='/sdcard/sl4a/scripts/YOUR\u脚本'

数据={”com.googlecode.android\u脚本.extra.SCRIPT_路径“=>;脚本}

额外费用=JSON.generate生成(数据)

d.星触觉('com.googlecode.android\u脚本.action.LAUNCH_后台脚本','','',数据,真,'com.googlecode.android\u脚本','com.googlecode.android\u脚本.activity.ScriptingLayerServiceLauncher')

[/代码]

我希望这有帮助!在

相关问题 更多 >