Android終端模擬器Termux的強大功能:應用調(diào)用Termux執(zhí)行命令
Termux介紹
Termux是一款開源的Android終端模擬器,使用apt和dpkg作為包管理工具,可以輕松安裝、升級和管理各種軟件包。
Termux為多種編程語言提供了支持,包括Python、Ruby、Node.js、PHP、Perl等,簡單配置后可以在Android設備上編寫和運行代碼。還提供了豐富的命令行工具,如grep、awk、sed以及各種文本處理和網(wǎng)絡診斷工具。
Termux允許用戶訪問和管理Android設備上的文件,包括內(nèi)部存儲和外部存儲。同時包含SSH客戶端和服務器,允許用戶遠程連接到其他計算機或者讓其他計算機連接到Termux。此外還支持版本控制系統(tǒng)如Git和Subversion,用戶可以在其設備上進行版本控制操作。
調(diào)用Termux執(zhí)行命令
自Termux 0.95版起,第三方應用程序可以通過向RunCommandService發(fā)送intent或成為termux-tasker插件客戶端的插件,在Termux應用程序上下文中運行命令。
- 配置Termux允許外部應用調(diào)用: 打開Termux,修改~/.termux/termux.properities文件,添加一行:
allow-external-apps = true
對于安卓版本>=10.0,需要給Termux啟用關聯(lián)應用權(quán)限,否則將不允許第三方應用直接后臺啟動Termux,而是當Termux在后臺運行時才能調(diào)用。
啟用「關聯(lián)應用」權(quán)限:【應用信息】 -> 【應用】 -> 【Termux】 -> 【權(quán)限】 -> 【關聯(lián)應用】。
- 應用配置: 在AndroidManifest.xml文件中請求com.termux.permission.RUN_COMMAND權(quán)限,在代碼中給RunCommandService發(fā)送Intent。
<uses-permission android:name="com.termux.permission.RUN_COMMAND"/>
代碼中Intent構(gòu)建:
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);
相關參數(shù)說明:
- com.termux.RUN_COMMAND_PATH:調(diào)用的ELF文件;
- com.termux.RUN_COMMAND_ARGUMENTS:調(diào)用命令參數(shù);
- com.termux.RUN_COMMAND_WORKDIR:工作目錄;
- com.termux.RUN_COMAND_BACKGROUND:是否后臺運行。如果為true則不會進入TermuxActivity;
- com.termux.RUN_COMMAND_SESSION_ACTION:會話動作。
此處調(diào)用的是top命令:/data/data/com.termux/files/usr/bin/top