Ich habe Anfang dieser Woche eine ähnliche Frage gestellt, aber ich verstehe immer noch nicht, wie ich eine Liste aller installierten Anwendungen abrufen und dann eine zum Ausführen auswählen kann.
Ich habe es versucht:
Intent intent = new Intent(ACTION_MAIN);
intent.addCategory(CATEGORY_LAUNCHER);
Dies zeigt nur Anwendungen an, die vorinstalliert sind oder den ACTION_MAIN
Intent-Typ ausführen können .
Ich weiß auch, dass ich PackageManager
alle installierten Anwendungen abrufen kann, aber wie verwende ich dies, um eine bestimmte Anwendung auszuführen?
android
android-intent
2Real
quelle
quelle
Antworten:
Im Folgenden finden Sie den Code zum Abrufen der Liste der auf Android installierten Aktivitäten / Anwendungen:
Sie erhalten alle notwendigen Daten
ResolveInfo
, um eine Anwendung zu starten. Sie könnenResolveInfo
Javadoc hier überprüfen .quelle
Hier ist ein sauberer Weg mit dem
PackageManager
Weitere Infos hier http://qtcstation.com/2011/02/how-to-launch-another-app-from-your-app/
quelle
Eine andere Möglichkeit, nach System-Apps zu filtern (funktioniert am Beispiel von king9981):
quelle
Hier ein gutes Beispiel:
quelle
Liste der installierten Nicht-System-Apps abrufen
quelle
So filtern Sie nach systembasierten Apps:
quelle
Um alle installierten Apps zu erhalten, können Sie den Paket-Manager verwenden.
Zum Ausführen können Sie den Paketnamen verwenden
Weitere Informationen finden Sie in diesem Blog unter http://codebucket.co.in/android-get-list-of-all-installed-apps/.
quelle
Sie können die Liste der auf dem Android-Gerät installierten Apps mithilfe des folgenden Codes finden: "packageInfo" Enthält Informationen zur installierten Anwendung auf dem Gerät. Wir können Intent für die vom packageinfo-Objekt installierte Anwendung abrufen und mithilfe von startactivity (intent) die Anwendung starten. Es liegt an Ihnen, wie Sie die Benutzeroberfläche entweder Listview oder Gridview organisieren. Wenn Sie also auf ein Ereignis basierend auf der Position klicken, können Sie das Absichtsobjekt abrufen und die Aktivitätsabsicht starten.
quelle
Ich musste die System-Apps herausfiltern, die der Benutzer nicht wirklich verwendet (z. B. "com.qualcomm.service", "update services" usw.). Letztendlich habe ich eine weitere Bedingung hinzugefügt, um die App-Liste herauszufiltern. Ich habe gerade überprüft, ob die App "Launcher Intent" hat.
Der resultierende Code sieht also so aus ...
quelle
Wenn sich in einem Paket mehrere Starter befinden, hat der obige Code ein Problem. Beispiel: Auf LG Optimus enthält Facebook für LG, MySpace für LG, Twitter für LG in einem Paket den Namen SNS und wenn Sie oben verwenden, wird SNS wiederholt. Nach stundenlanger Recherche kam ich mit folgendem Code. Scheint gut zu funktionieren.
quelle
@Jas: Ich habe diesen Code nicht mehr, aber ich habe etwas in der Nähe gefunden. Ich habe dies gemacht, um nach "Komponenten" meiner Anwendung zu suchen. Es handelt sich lediglich um Aktivitäten mit einer bestimmten Kategorie.
Ich habe den Teil kommentiert, in dem der Aktivitätsname angezeigt wird, aber er ist ziemlich einfach.
quelle
Saubere Lösung, die erfolgreich System-Apps herausfiltert
Die Idee hinter dieser Lösung ist, dass die Hauptaktivität jeder System-App kein benutzerdefiniertes Aktivitätssymbol hat . Diese Methode liefert mir ein hervorragendes Ergebnis:
quelle
quelle
Ich habe eine andere Lösung:
quelle
Holen Sie sich alle Apps:
Überprüfen Sie, ob die App installiert ist, und öffnen Sie sie:
quelle
Sie können dies verwenden:
quelle
quelle