2011-01-06 8 views
17

Ich möchte die Aktivitätszielfilter für die auf meinem Telefon installierten Pakete auflisten. Dies ist nur für eine Lernerfahrung, ich möchte verstehen, welche Apps mit impliziten Absichten gestartet werden können und wie die Intent-Filter eingerichtet sind.List Intent-Filter für installierte Pakete

Google stellt eine Tabelle für die Anwendungen zur Verfügung, die sie unter http://developer.android.com/guide/appendix/g-app-intents.html bereitstellen. Ich möchte eine ähnliche Liste für andere Anwendungen erstellen.

Kann ich den PackageManager verwenden und diese Informationen im Code eingravieren? Kennt jemand eine vorhandene App, die das kann? Kann mir jemand auf ein bestehendes Beispiel hinweisen, um das zu tun, was ich will?

Sorry, wenn dies ein Duplikat ähnliche Fragen wie Listing an application's activity and intent-filters? und Android -- How to get a list of all available intent filters ?

Antwort

13

AFAIK gibt es keine Möglichkeit, alle Absichten aufzulisten, die eine bestimmte Anwendung empfangen kann. Sie können jedoch ähnliche (wenn auch nicht so umfangreiche) Informationen erhalten, indem Sie selbst einige Absichten erstellen und dann mithilfe von queryIntentActivities, queryIntentServices und queryBroadcastReceivers von PackageManager sehen, welche Anwendungen installiert sind, die auf diese Absicht reagieren.

10

Lassen Sie mich die App "ManifestViewer" empfehlen. Es listet Intents für jede installierte App auf. https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer

Einen schönen Tag noch!

+1

Ich werde es überprüfen. Danke - https://market.android.com/details?id=uk.co.ashtonbrsc.android.intentintercept&feature=search_result –

+0

Schließlich ging es um das Auschecken. Danke noch einmal. –

+0

Ich denke, es enthält nur einige allgemeine Absichten, aber nicht diejenigen, die auf den Apps verwendet werden. –

1

Verwenden Sie den folgenden Befehl mit meinem Nexus 6 auf Nougat 7.0 habe ich die Liste aller Absichten:

adb shell pm dump * | grep ' filter' | cut -d ' ' -f 12 | sort | uniq

  • Zuerst wird der Befehl eine Shell in das Gerät öffnet und macht einen PackageManager Dump jeder Paket.
  • Dann pipe diese Ausgabe zu grep, die nur Zeilen mit dem Wort "Filter" auswählt.
  • Dann pipe diese Ausgabe zu cut, die den Text an der 12. Stelle aller Leerzeichen in dieser Zeile gefunden.
  • Dann Rohr, das die Ausgabe an sort von A bis Z. diese Liste sortiert
  • Dann Rohr, das die Ausgabe an uniq duplizierten Intents aufklärt.

YMMV - versuchen Sie es nacheinander. Fügen Sie die nächste Pipe hinzu, wenn Sie die gewünschten Ergebnisse sehen. Nicht sicher, ob frühere Versionen von Ihnen zum Beispiel eine andere Anzahl von Leerzeichen für geben.

Und, wenn Sie die Ergebnisse von nur einem Paket wie Chrome wollte könnten Sie:

adb shell pm dump com.android.chrome | grep ' filter' | cut -d ' ' -f 12 | sort | uniq

+0

Schöne Antwort, aber der Filterteil war nicht offensichtlich.Sie müssen den gesamten Pfad dort mit etwas wie "com.android.chrome /." – not2qubit

+1

Es gibt keine "Dump" -Option in meinem Android 4 Setup. 'dumpsys package r' arbeitete stattdessen für mich. – eadmaster

Verwandte Themen