2011-01-06 14 views
17

Chcę wyświetlić listę filtrów działania dla pakietów zainstalowanych w moim telefonie. To jest po prostu dla uczenia się, chcę zrozumieć, jakie aplikacje można uruchomić z ukrytymi intencjami i jak skonfigurowane są filtry zamiarów.Lista filtrów zamiany zainstalowanych pakietów

Google udostępnia tabelę dla aplikacji dostarczanych pod adresem http://developer.android.com/guide/appendix/g-app-intents.html. Szukam utworzenia podobnej listy dla innych aplikacji.

Czy mogę użyć menedżera pakietów i wykopać te informacje w kodzie? Czy ktoś wie o istniejącej aplikacji, która może to zrobić? Czy ktoś może wskazać mi istniejący przykład, aby zrobić to, co chcę?

Przepraszam, jeśli jest duplikatem podobne pytania jak Listing an application's activity and intent-filters? i Android -- How to get a list of all available intent filters ?

Odpowiedz

13

AFAIK nie ma sposobu, aby wymienić wszystkie zamiary że konkretna aplikacja może odbierać. Można jednak uzyskać podobne (choć nie tak ekspansywne) informacje, tworząc własne intencje, a następnie używając funkcji queryIntentities, queryIntentservices i queryBroadcastReceivers, aby sprawdzić zainstalowane aplikacje, które będą reagować na tę intencję.

10

Pozwól mi polecić aplikację "ManifestViewer". Zawiera listę zamiarów każdej zainstalowanej aplikacji. https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer

Miłego dnia !!

+1

będę to sprawdzić. dzięki - https://market.android.com/details?id=uk.co.ashtonbrsc.android.intentintercept&feature=search_result –

+0

W końcu udało mi się to sprawdzić. Dzięki jeszcze raz. –

+0

Wydaje mi się, że zawiera tylko niektóre popularne zamiary, ale nie te, które są używane w aplikacjach. –

1

pomocą następującego polecenia z mojego Nexus 6 na Nugat 7.0 Mam listę wszystkich zamiarów:

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

  • Pierwsza komenda otwiera powłokę w urządzeniu i robi PackageManager zrzut każdego pakiet.
  • Następnie należy wyprowadzić potok do grep, który wybiera tylko linie ze słowem "filtr".
  • Następnie należy podać potok, który jest wyprowadzany na cut, co daje tekst znaleziony na 12. pozycji wszystkich spacji na tej linii.
  • Następnie rura że wyjście do sort który sortuje tę listę od A do Z.
  • Następnie rura że wyjście do uniq który podaje się duplikatów intencjami.

YMMV - wypróbuj je pojedynczo. Dodaj następną fajkę, gdy zobaczysz żądane wyniki. Nie jestem pewien, czy wcześniejsze wersje adb dadzą inną liczbę miejsc na przykład dla cut.

A jeśli chciał wyniki tylko dla jednego pakietu jak Chrome można użyć:

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

+0

Dobra odpowiedź, ale część "filter" nie była oczywista.Musisz umieścić tam całą ścieżkę z czymś w rodzaju '" com.android.chrome /. "'. – not2qubit

+1

Nie ma opcji 'dump' w mojej konfiguracji Androida 4. Zamiast tego dla mnie działał pakiet 'dumpsys r'. – eadmaster

Powiązane problemy