2012-09-20 19 views
23

Próbuję utworzyć niestandardowy program uruchamiający dla Androida i próbuję wymyślić, jak uruchomić inną kopalnię formularza aplikacji. Pomyślałem drogę do zrobienia było zamiary, i znalazłem post na tym tutaj:Jak rozpocząć intencję z ResolveInfo

Open another application from your own (intent)

ja naprawdę nie rozumiem odpowiedź chociaż! Czy ktoś może przekazać mi krótki fragment lub serię kroków, aby przejść od pojedynczej wersji ResolveInfo do uruchomienia aplikacji reprezentowanej przez te ResolveInfo?

Odpowiedz

39

Biorąc pod uwagę ResolveInfo nazwie launchable:

ActivityInfo activity=launchable.activityInfo; 
ComponentName name=new ComponentName(activity.applicationInfo.packageName, 
            activity.name); 
Intent i=new Intent(Intent.ACTION_MAIN); 

i.addCategory(Intent.CATEGORY_LAUNCHER); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
      Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
i.setComponent(name); 

startActivity(i); 

(od https://github.com/commonsguy/cw-omnibus/tree/master/Introspection/Launchalot)

+0

Działa doskonale, dzięki! –

+0

wszystko jest w porządku, ale każda aplikacja ma mniejszy rozmiar ikony, który tutaj nie jest zarządzany –

20

Utwórz nową intencyjny ten sposób.

Intent intent = new Intent(); 
    intent.setClassName(resolveInfo.activityInfo.applicationInfo.packageName, 
      resolveInfo.activityInfo.name); 
    startActivity(intent); 
+1

Wow proste i krótkie ... –

+1

Czy druga linia może być krótsza? intent.setClassName (resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name); –

Powiązane problemy