Как одновременно запустить 2 приложения из текущего (одно в фоновом режиме)?

Я хочу запустить 2 приложения для Android из текущего приложения. Один из них должен быть запущен в фоновом режиме, а другой - на переднем плане, с которым пользователь теперь будет взаимодействовать. Когда я пробую существующие решения для запуска нескольких намерений (например, setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)а такжеtry....finally)они не работают, возможно потому, что когда запускается 1 приложение, устройство мгновенно переключается на это; и эти решения предназначены для запуска нескольких действий в одних и тех же приложениях. Пожалуйста, предложите решение, отличное от запуска в качестве услуги.

ОБНОВЛЕНИЕ - Ответ:

Основываясь на ответе Дэвида Вассера, это работает:

    final Intent intent1=getPackageManager().getLaunchIntentForPackage("example.app1.package");
    final Intent intent2=getPackageManager().getLaunchIntentForPackage("example.app3.package");
    Handler mHandler=new Handler();
    Runnable mLaunchTask = new Runnable() {
             public void run() {
                      startActivity(intent1);
             }
    };
    mHandler.postDelayed(mLaunchTask,1000);
    startActivity(intent2);

2 ответа

Решение

Есть несколько способов сделать это. Вот 2:

1) Запустите приложение B. Запустите фоновую ветку или опубликуйте Runnable к Handler который запустит приложение C через несколько секунд. Вам нужно дать Android достаточно времени, чтобы запустить приложение B и отобразить его на экране. Если вы позже запустите приложение C, оно появится поверх приложения B.

2) Запустите приложение B, и приложение B запустит само приложение C. Вы могли бы передать "дополнительный" в Intent вы используете для запуска приложения B, а приложение B может использовать наличие этого "дополнительного", чтобы знать, что оно должно запустить приложение C.

Ответ Дэвида Вассера правильный, этот код работает:

final Intent intent1=getPackageManager().getLaunchIntentForPackage("example.app1.package");
    final Intent intent2=getPackageManager().getLaunchIntentForPackage("example.app3.package");
    Handler mHandler=new Handler();
    Runnable mLaunchTask = new Runnable() {
             public void run() {
                      startActivity(intent1);
             }
    };
    mHandler.postDelayed(mLaunchTask,1000);
    startActivity(intent2);
Другие вопросы по тегам