Вы можете запустить любой компонент с намерением только знать имя действия или целевого компонента (pkg, cls).
Учтите, что я разработал два приложения app1 & app2 app1 имя pkg - com.xyz.app1 & app2 pkg namecom.xyz.app2.
app1 с двумя действиями App1MainActivity
& App1XyzActivity
, app2 имеет только одно действие App2MainActivity
теперь я хочу запустить оба действияиз app1 из app2 App2MainActivity
app2 App2MainActivity имеет две кнопки b1 и b2 при нажатии b1 Я хочу запустить App1MainActivity и при нажатии b2 Я хочу начатьApp1XyzActivity
тогда код для кнопок b1 и b2 в App2MainActivity равен
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 и если вы знаете его имя пакета и имя класса.