Просто для целей обучения я делаю ярлык для запуска, например приложение. Цель проста; в моем приложении пользователь выбирает несколько предпочтительных приложений и нажимает на одно из них, чтобы запустить его.
После поиска правильного FLAGS
, который будет использоваться для intent
при запуске приложения, это мой код:
Intent i = getPackageManager().getLaunchIntentForPackage(pkgName);
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
if (i != null) startActivity(i);
Хотя это прекрасно работает для некоторых приложений, для других это работает странно.
Проблема в том, что для некоторых приложений, если приложение уже запущено; вместо того, чтобы вернуться в свое предыдущее состояние, он перезапускает свою основную деятельность, как если бы он никогда не использовался. Примерами являются стандартное приложение Android Messaging, приложение Settings.
А у других он перезапускается в первый раз, а затем начинает возобновляться. Для таких приложений, как Whatsapp, Adobe Reader.
При запуске приложений из других лаунчеров таких проблем нет.
Я просматривал весь Интернет за последние два дня и перепробовал множество решений из разных блогов и из сотен подобных вопросов, заданных в самом SO, но ни одно из них не сработало. Я даже просмотрел код панели запуска Android по умолчанию, который, кстати, отлично запускает приложения, но не нашел успеха.
Я знаю, что это очень повторяющийся вопрос, но я спрашиваю только потому, что ни одно из решений, которые я пробовал, не сработало для меня. Спасибо за помощь.
Редактировать
Если это как-то связано с манифестом, вот оно,
...
<activity
android:name=".SwitchActivity"
android:excludeFromRecents="true"
android:label="@string/title_activity_switch"
android:noHistory="true"
android:launchMode="singleTask"
android:clearTaskOnLaunch="true"
android:stateNotNeeded="true"
android:theme="@android:style/Theme.NoDisplay">
...
Intent
, возвращенныйgetLaunchIntentForPackage()
, не изменяя его? - person Karakuri   schedule 04.09.2015