2010-08-06 13 views

risposta

79

Provare a utilizzare PackageManager e getLaunchIntentForPackage()

+1

Grazie, ho perso questa funzione mentre guardando PackageManager ... – bart

+0

Sir Perchè non lancio il Launcher ottenendo il suo Nome del pacchetto relativo dare java.lang.NullPointer Eccezione ? –

+0

Avvia una nuova istanza completa? Voglio lanciare quello esistente. Come lo faccio? – JohnyTex

116

Basta usare queste due righe seguenti, in modo da poter lanciare qualsiasi applicazione installata la cui package name è nota:

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.example.abc"); 
startActivity(LaunchIntent); 

Se non si conosce il nome del pacchetto di applicazione che volevi lanciare quindi provare la tua mano su

PackageManager pm; 
pm = getPackageManager(); 
// get a list of installed apps. 
packages = pm.getInstalledApplications(0); 

Per maggiori informazioni consultare questo link Using Package Manager

+2

+1 il suo bel codice –

+1

Questo avvia una nuova istanza completa? Voglio lanciare quello esistente. Come lo faccio? – JohnyTex

+0

@hohny tex trovi una soluzione per il tuo problema –

12

È possibile ottenere l'intento di lancio attraverso la classe PackageManager:

PackageManager pm = context.getPackageManager(); 
Intent launchIntent = pm.getLaunchIntentForPackage("com.example.package"); 
context.startActivity(launchIntent); 

notare che getLaunchIntentForPackage restituisce null se il pacchetto non è stato trovato. Così si potrebbe desiderare di aggiungere un controllo nullo:

if (launchIntent != null) { 
    context.startActivity(launchIntent); 
} else { 
    Toast.makeText(context, "Package not found", Toast.LENGTH_SHORT).show(); 
} 
+0

Questa risposta è solo leggermente diversa dalle risposte precedenti, tranne che è di 3 anni più recente. Non vedo come i giustificativi siano giustificati. – hBrent

Problemi correlati