我正在为一个android项目自动化启动依赖的过程。其中一个依赖项是启动Termux(通过F-Droid安装,而不是Play商店作为recommended)。
我正在尝试通过另一个应用程序启动已安装的Termux应用程序,并将一些命令添加到其**~./bashrc**文件中以实现自动化。我知道一个已安装的应用程序可以通过另一个Android应用程序启动(更多细节是here)。
我想知道这是否也适用于Termux?我想知道我们是否也可以使用Intent Concept从Android应用程序启动Termux?如果是,Termux软件包的名称是什么?在示例代码中,我尝试使用“com.termux”作为其包名,但没有成功。换句话说,下面这行返回null:
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.termux");
更新时间:
我可以使用如上所示的Intent概念打开另一个已安装的应用程序(我开发并在平板电脑上安装了apk文件的应用程序)(通过替换相应的包名称而不是termux包名称)。
注意:我已经通过F-Drioid安装了Termux,而不是Google Play商店。
新观察:
1.我通过包名称应用程序确认Termux包名称为“com.termux”,其活动类名也是“com.termux.app.termuxActivity”
1.但是似乎“com.termux”不能通过包管理器访问。当我试图将“com.termux”传递给下面的函数时,它返回false。
有什么想法或建议吗?
public boolean isPackageExisted(String targetPackage){
enter code here
PackageManager pm=getPackageManager();
try {
PackageInfo info=pm.getPackageInfo(targetPackage,PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
return false;
}
return true;
}
2条答案
按热度按时间jslywgbw1#
将
com.termux
添加到queries
元素中,或者如果targetSdkVersion
是30+
,则在AndroidManifest.xml
中声明QUERY_ALL_PACKAGES
权限。检查包可见性或this article以获取更多信息。否则,您将在logcat
中获得PackageSetting{...... com.termux/......} BLOCKED
错误。此外,您可以通过
RUN_COMMAND
intent在termux中运行命令。termux-shared
库自v0.116
起发布在jitpack上,请查看Termux Libraries以获取导入说明。此外,活动名称为
com.termux.app.TermuxActivity
。sigwle7e2#
am start --user 0 -n com.termux/com.termux.app.TermuxActivity