2010-08-06 3 views

Répondre

79

Essayez d'utiliser PackageManager et getLaunchIntentForPackage()

+1

Merci, j'ai raté cette fonction en regardant PackageManager ... – bart

+0

Sir Pourquoi ne puis-je lance le lanceur en obtenant son nom de package son donnant Exception java.lang.NullPointer ? –

+0

Est-ce que lancer une nouvelle instance complète? Je veux lancer l'existant. Comment je fais ça? – JohnyTex

116

Il suffit d'utiliser ces deux lignes suivantes, vous pouvez lancer une application installée dont package name est connu:

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

Si vous ne connaissez pas le nom du package d'application que vous vouliez lancer puis essayer votre main

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

Pour plus d'informations référez-vous à ce lien Using Package Manager

+2

+1 son joli code –

+1

Est-ce que cela lance une nouvelle instance complète? Je veux lancer l'existant. Comment je fais ça? – JohnyTex

+0

@hohny tex trouvez-vous une solution à votre problème? –

12

Vous pouvez obtenir l'intention de lancement à travers la PackageManager classe:

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

Notez que getLaunchIntentForPackage renvoie null si le paquet est introuvable. Donc, vous voudrez peut-être ajouter un chèque null:

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

Cette réponse est seulement très légèrement différente des réponses plus anciennes, sauf que c'est 3 ans plus tard. Je ne vois pas comment les upvotes sont justifiées. – hBrent

Questions connexes