android - 从 SL4A 脚本启动 SL4A 脚本

标签 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 行放在哪里?

最佳答案

此函数将从另一个脚本中启动任何 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 .

关于android - 从 SL4A 脚本启动 SL4A 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15824782/

相关文章:

javascript - 如何在 Android 中播放歌曲 - phonegap

android - 不要在自定义 View 中滚动 ListView 被触摸

java - 解析 Microsoft CRM Web API 返回的 Odata 值

python - python中的素数测试

安卓和Python

javascript - 在 JavaScript 中相当于 Python 的 sys.exit()

android - 如何将 Android 小部件添加到我的应用程序?

python - 遗传算法 : Higher Mutation Rate leads to lower run time

python - For循环在Maya中复制对象——Python 2