繁体   English   中英

在特定活动中启动其他Android应用

[英]start other Android apps at specific activities

我想在特定活动中启动其他应用程序(任何应用程序,而不仅仅是我自己制作的应用程序)。 有关程序包名称和活动的信息是在运行时以编程方式获取的,并存储在包含程序包名称和类名称的扁平字符串中。 稍后,我将在选定的活动中启动该应用程序。

 Intent LaunchIntent = new Intent();
 LaunchIntent.setClassName(ComponentName.unflattenFromString(info_string).getPackageName(), ComponentName.unflattenFromString(info_string).getClassName());
 startActivity( LaunchIntent );

但这是行不通的...该应用会在其主要活动中启动。 我看到了一个叫做:

Intent.setClass(Context packageContext, Class<?> cls); 

我尝试使用它,但找不到任何获取其他应用程序包上下文的方法。

有谁知道如何实现这一目标?

启动该特定活动时,请考虑通过Bundle发送软件包名称,并使用该意图启动该活动。 在该活动的稍后部分,您可以使用包含程序包名称的字符串启动该应用程序。

编辑:您说您以编程方式获取程序包名称和类名称。 因此,只需两者分开 ,然后执行以下操作:

使用意图使用类名称启动该活动。 对于包名称部分:

    Intent channelIntent =  new Intent(getApplicationContext(),ClassName.class);//Replace with the name of the class of the specific activity.
                    Bundle b = new Bundle();
                    b.putString("app_package", package_name);//replace package name with "com.x.y" -Your package name
                    channelIntent.putExtras(b);
                    channelIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(channelIntent);

在该活动中,使用

Bundle b = getIntent().getExtras();
String app_pkg = b.getString("app_package");

检索该包裹名称。 然后使用软件包名称从该活动中启动该应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM