我正在致力于自动化启动 Android 项目依赖项的过程。 依赖项之一是启动 Termux(通过 F-Droid 安装,而不是像推荐那样通过 Play 商店安装)。
我正在尝试通过另一个应用程序启动已安装的 Termux 应用程序,并向其 ~./bashrc 文件添加一些命令以实现自动化。 我知道可以通过另一个 Android 应用程序启动已安装的应用程序(更多详细信息请参见此处)。
我想知道 Termux 是否也可以这样做?我想知道我们是否也可以使用意图概念从 Android 应用程序启动 Termux?如果是,Termux 包名称是什么? 我尝试在示例代码中使用“com.termux”作为其包名,但它不起作用。 换句话说,以下行返回 null:
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.termux");
更新:
我可以使用上面所示的 Intent 概念打开另一个已安装的应用程序(我在平板电脑上开发并安装其 apk 文件的应用程序)(通过替换适当的包名称而不是 termux 包名称)。
注意: 我已经通过 F-Drioid 安装了 Termux,而不是 google play 商店。
新观察:
有什么想法或建议吗?
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;
}
将
com.termux
添加到 queries
元素,或者如果 QUERY_ALL_PACKAGES
是 AndroidManifest.xml
,则在 targetSdkVersion
中声明 30+
权限。检查包可见性或本文了解更多信息。否则,您将在 PackageSetting{...... com.termux/......} BLOCKED
中收到 logcat
错误。
<manifest
<queries>
<package android:name="com.termux" />
</queries>
</manifest>
RUN_COMMAND
意图在 termux 中运行命令。 termux-shared
库自 v0.116
起发布在 jitpack 上,请检查 Termux Libraries 以获取导入说明。
com.termux.app.TermuxActivity
。
am start --user 0 -n com.termux/com.termux.app.TermuxActivity