Android终端模拟器Termux的强大功能:应用调用Termux执行命令

移动开发 Android
Termux为多种编程语言提供了支持,包括Python、Ruby、Node.js、PHP、Perl等,简单配置后可以在Android设备上编写和运行代码。还提供了丰富的命令行工具,如grep、awk、sed以及各种文本处理和网络诊断工具。

Termux介绍

Termux是一款开源的Android终端模拟器,使用apt和dpkg作为包管理工具,可以轻松安装、升级和管理各种软件包。

Termux为多种编程语言提供了支持,包括Python、Ruby、Node.js、PHP、Perl等,简单配置后可以在Android设备上编写和运行代码。还提供了丰富的命令行工具,如grep、awk、sed以及各种文本处理和网络诊断工具。

Termux允许用户访问和管理Android设备上的文件,包括内部存储和外部存储。同时包含SSH客户端和服务器,允许用户远程连接到其他计算机或者让其他计算机连接到Termux。此外还支持版本控制系统如Git和Subversion,用户可以在其设备上进行版本控制操作。

调用Termux执行命令

自Termux 0.95版起,第三方应用程序可以通过向RunCommandService发送intent或成为termux-tasker插件客户端的插件,在Termux应用程序上下文中运行命令。

  1. 配置Termux允许外部应用调用: 打开Termux,修改~/.termux/termux.properities文件,添加一行:
allow-external-apps = true

对于安卓版本>=10.0,需要给Termux启用关联应用权限,否则将不允许第三方应用直接后台启动Termux,而是当Termux在后台运行时才能调用。

启用「关联应用」权限:【应用信息】 -> 【应用】 -> 【Termux】 -> 【权限】 -> 【关联应用】。

  1. 应用配置: 在AndroidManifest.xml文件中请求com.termux.permission.RUN_COMMAND权限,在代码中给RunCommandService发送Intent。
<uses-permission android:name="com.termux.permission.RUN_COMMAND"/>

代码中Intent构建:

intent.setClassName("com.termux", "com.termux.app.RunCommandService");
intent.setAction("com.termux.RUN_COMMAND");
intent.putExtra("com.termux.RUN_COMMAND_PATH", "/data/data/com.termux/files/usr/bin/top");
intent.putExtra("com.termux.RUN_COMMAND_ARGUMENTS", new String[]{"-n", "5"});
intent.putExtra("com.termux.RUN_COMMAND_WORKDIR", "/data/data/com.termux/files/home");
intent.putExtra("com.termux.RUN_COMMAND_BACKGROUND", false);
intent.putExtra("com.termux.RUN_COMMAND_SESSION_ACTION", "0");
startService(intent);

相关参数说明:

  • com.termux.RUN_COMMAND_PATH:调用的ELF文件;
  • com.termux.RUN_COMMAND_ARGUMENTS:调用命令参数;
  • com.termux.RUN_COMMAND_WORKDIR:工作目录;
  • com.termux.RUN_COMAND_BACKGROUND:是否后台运行。如果为true则不会进入TermuxActivity;
  • com.termux.RUN_COMMAND_SESSION_ACTION:会话动作。

此处调用的是top命令:/data/data/com.termux/files/usr/bin/top

责任编辑:武晓燕 来源: 沐雨花飞蝶
相关推荐

2022-02-14 10:29:40

AndroidLinux模拟器

2009-09-08 10:35:24

LINQ技术

2010-01-27 18:27:07

Android模拟器应

2010-03-03 17:11:08

2017-11-27 09:31:40

Linux终端模拟器Xiki

2009-03-09 18:08:26

LinuxEvilvte终端模拟器

2009-03-09 21:06:35

LinuxEvilvte终端模拟器

2014-06-06 10:32:11

Linux终端模拟器

2019-02-20 11:24:27

Linux 开源操作系统

2018-01-29 11:40:44

LinuxAndroidTermux

2010-03-04 13:36:55

openSUSE

2015-11-16 16:40:04

开源终端模拟器

2010-08-13 16:10:11

FlexCSS

2010-01-25 09:28:54

Android模拟器

2010-08-06 14:23:25

FlexCSS

2009-08-26 18:15:39

ibmdwFlex

2009-12-24 11:13:21

2022-04-11 10:21:35

GNU命令行工具

2010-03-19 09:34:42

Cisco 2600模

2014-11-17 10:34:15

点赞
收藏

51CTO技术栈公众号