Czy próbowałeś tego?
startActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER));
(nie próbowałem to sam, bo mój przypadek użycia jest trochę bardziej skomplikowana --- Mam zastąpił wyrzutnię i chcę zadzwonić do starą wyrzutnię ...)
Odkryłem również, że możesz użyć menedżera pakietów, aby przejrzeć wszystkie działania, które spełniają pewne kryteria filtrowania zamiarów. Na przykład, jeśli chcesz znaleźć wszystkie działania oznaczone jako domyślny domu działalności głównej, użyj tego:
Intent intent=null;
final PackageManager packageManager=getPackageManager();
for(final ResolveInfo resolveInfo:packageManager.queryIntentActivities(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME), PackageManager.MATCH_DEFAULT_ONLY))
{
if(!getPackageName().equals(resolveInfo.activityInfo.packageName)) //if this activity is not in our activity (in other words, it's another default home screen)
{
intent=packageManager.getLaunchIntentForPackage(resolveInfo.activityInfo.packageName));
break;
}
}
pamiętać, że zastąpiły domyślnego ekranu głównego w urządzeniu --- dlatego muszę zrobić pewność, że aktywność, którą znalazłem, nie jest aktywnością, która działa! Jeśli nie zastąpiłeś domyślnej aktywności domowej, nie musisz tego sprawdzać --- po prostu użyj pierwszej (i prawdopodobnie jedynej) domyślnej aktywności domowej.
(Zauważ, że nadal nie mogę uruchomić starego launchera z mojego launchera, być może dlatego, że stary program uruchamiający prowadzi rejestr domyślnego launchera, który jest moim nowym launcherem, i po prostu oddzwania do niego. Ale przynajmniej się nie zawiesi i domyślam się, że gdyby nie zastąpić starego ekranu głównego, to po prostu by działało.)
http://stackoverflow.com/questions/5547606/how-to-integrate-default-app-of-android-in-our-app-programatically –