如何通过另一个Android应用程序启动Termux?

vwkv1x7d  于 2023-09-29  发布在  Android
关注(0)|答案(2)|浏览(166)

我正在为一个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;
}
jslywgbw

jslywgbw1#

com.termux添加到queries元素中,或者如果targetSdkVersion30+,则在AndroidManifest.xml中声明QUERY_ALL_PACKAGES权限。检查包可见性或this article以获取更多信息。否则,您将在logcat中获得PackageSetting{...... com.termux/......} BLOCKED错误。

<manifest
    <queries>
        <package android:name="com.termux" />
   </queries>
</manifest>

此外,您可以通过RUN_COMMAND intent在termux中运行命令。termux-shared库自v0.116起发布在jitpack上,请查看Termux Libraries以获取导入说明。
此外,活动名称为com.termux.app.TermuxActivity

sigwle7e

sigwle7e2#

am start --user 0 -n com.termux/com.termux.app.TermuxActivity

相关问题