Android終端模擬器Termux的強大功能:應用調用Termux執行命令
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應用程序上下文中運行命令。
- 配置Termux允許外部應用調用: 打開Termux,修改~/.termux/termux.properities文件,添加一行:
allow-external-apps = true
對于安卓版本>=10.0,需要給Termux啟用關聯應用權限,否則將不允許第三方應用直接后臺啟動Termux,而是當Termux在后臺運行時才能調用。
啟用「關聯應用」權限:【應用信息】 -> 【應用】 -> 【Termux】 -> 【權限】 -> 【關聯應用】。
- 應用配置: 在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