[英]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.