您可以通过意图启动任何组件,只需要知道操作或目标组件(pkg,cls)名称。
考虑我开发了两个应用程序 app1 & app2 app1 pkg name is com.xyz.app1 & app2 pkg name iscom.xyz.app2.
app1有两个活动App1MainActivity
& App1XyzActivity
,app2现在只有一个活动App2MainActivity
我想从app2 App2MainActivity app2 App2MainActivity有两个按钮 b1 & b2 点击 b1 我想启动 App1MainActivity & 点击 b2 我想开始然后App2MainActivity 中按钮 b1 和 b2 的代码是
App1XyzActivity
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i = new Intent();
String pkg = "com.xyz.app1";
String cls = "com.xyz.app1.App1MainActivity";
i.setComponent(new ComponentName(pkg, cls));
App2MainActivity.this.startActivity(i);
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i = new Intent();
String pkg = "com.xyz.app1";
String cls = "com.xyz.app1.App1XyzActivity";
i.setComponent(new ComponentName(pkg, cls));
App2MainActivity.this.startActivity(i);
}
});
现在我安装了两个应用程序 app1 和 app2 并运行 app2。
当我单击按钮 b1 时,app1 App1MainActivity 已启动,但如果我单击按钮 b2,则会发生异常,原因是即使您知道包名称及其类名,我们也无法随机启动另一个应用程序的任何活动,但您可以启动另一个应用程序主活动,如果它有带有动作 MAIN 的意图过滤器,并且你知道它的包名和类名。