2012-10-23 18 views
14

Potrzebuję uzyskać nazwę działania launchera, aby uruchomić działanie z mojej aplikacji. Każde rozwiązanieUzyskaj nazwę uruchamiania Nazwa aplikacji Android

+0

nazwa ComponentName = new ComponentName (Pakiet, launcheractivity); \t \t \t \t Intencja i = nowy cel (cel) AKCJA_MAIN); i.addCategory (Intent.CATEGORY_LAUNCHER); i.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK \t | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); i.setComponent (nazwa); _context.startActivity (i); Tutaj chcesz nazwę wyrzutni dla Nazwa składnika .. – user1767260

+0

Aktywność uruchamiania dowolnej aplikacji lub wszystkich zainstalowanych aplikacji? –

+0

Aktywność uruchamiania zainstalowanych aplikacji – user1767260

Odpowiedz

20

użyć następującego kodu, aby uzyskać aktywność wyrzutni wszystkich pakietów:

 final PackageManager pm = getPackageManager(); 

     Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
     mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

     List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0); 
     Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm)); 

     for (ResolveInfo temp : appList) { 

      Log.v("my logs", "package and activity name = " 
        + temp.activityInfo.packageName + " " 
        + temp.activityInfo.name); 


     } 
+0

dzięki za moją pracę dla mnie –

44

późno, ale lepiej tak to da dokładną zamiar rozpocząć działalność

PackageManager pm = getPackageManager(); 
Intent intent=pm.getLaunchIntentForPackage(pacakgeName); 
startActivity(intent); 
8

Nawet chociaż powyższe odpowiedzi odpowiadają bezpośrednio na pytanie OP: Chciałbym dodać moje dwa centy:

/** Backwards compatible method that will clear all activities in the stack. */ 
public void startLauncherActivity(Context context) { 
    PackageManager packageManager = context.getPackageManager(); 
    Intent intent = packageManager.getLaunchIntentForPackage(context.getPackageName()); 
    ComponentName componentName = intent.getComponent(); 
    Intent mainIntent = IntentCompat.makeRestartActivityTask(componentName); 
    context.startActivity(mainIntent); 
} 

W tym miejscu nie tylko otrzymuję działanie aplikacji uruchamiającej, ale także usuwam cały backstack z działań (co jest tym, czego faktycznie potrzebowałem, gdy uruchomiłem działanie programu uruchamiającego). Nazywam to na przykład w przypadku wygasłego tokena autoryzacji.

Ważne jest, aby używać IntentCompat, w przeciwnym razie trzeba uciekać się do Intent flagą Intent.FLAG_ACTIVITY_CLEAR_TASK, który jest wprowadzany tylko w API 11.

Powiązane problemy