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