2010-08-06 13 views
65

Kann mir jemand sagen, wie man eine neue Anwendung startet, wenn man nur seinen Paketnamen kennt? Ich habe keine Informationen darüber, welche Aktivität die wichtigste ist.Anwendung starten Wissen Paketname

Antwort

79

Versuchen PackageManager und getLaunchIntentForPackage()

+1

Danke, ich diese Funktion verpasst, während bei Packagemanager suchen ... – bart

+0

Sir Warum kann ich starten Sie den Launcher von seinem bekommenen Paket seine geben java.lang.NullPointer Ausnahme-Namen ? –

+0

Wird eine komplett neue Instanz gestartet? Ich möchte den bestehenden starten. Wie mache ich das? – JohnyTex

116

Verwenden Sie einfach diese beiden folgenden Zeilen verwenden, so dass Sie jede installierte Anwendung, deren starten können package name ist bekannt:

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

Wenn Sie nicht wissen, den Paketnamen der Anwendung dass Sie starten wollten, dann versuchen Sie Ihre Hand auf

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

Für weitere Informationen siehe diesen Link Using Package Manager

+2

+1 sein schöner Code –

+1

Wird eine komplett neue Instanz gestartet? Ich möchte den bestehenden starten. Wie mache ich das? – JohnyTex

+0

@hohny tex Finden Sie eine Lösung für Ihr Problem –

12

Sie können die Startabsicht durch die PackageManager Klasse erhalten:

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

Beachten Sie, dass getLaunchIntentForPackage kehrt null, wenn das Paket nicht gefunden wird. So können Sie eine NULL-Prüfung hinzuzufügen:

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

Diese Antwort unterscheidet sich nur sehr geringfügig von den älteren Antworten, außer dass sie 3 Jahre jünger ist. Ich sehe nicht, wie die Upvotes gerechtfertigt sind. – hBrent