2011-01-06 11 views
17

Quiero enumerar los filtros de intención de actividad para los paquetes instalados en mi teléfono. Esto es solo para una experiencia de aprendizaje, quiero entender qué aplicaciones se pueden iniciar con intenciones implícitas y cómo se configuran los filtros de intención.Lista de filtros de intención para paquetes instalados

Google proporciona una tabla para las aplicaciones que proporcionan en http://developer.android.com/guide/appendix/g-app-intents.html. Estoy buscando crear una lista similar para otras aplicaciones.

¿Puedo usar el PackageManager y obtener esta información en el código? ¿Alguien sabe de una aplicación existente que puede hacer esto? ¿Alguien puede señalarme un ejemplo existente para hacer lo que quiero?

Lo siento si esto es un duplicado de preguntas similares como Listing an application's activity and intent-filters? y Android -- How to get a list of all available intent filters ?

Respuesta

13

yo sepa no hay ninguna manera de enumerar todos los intentos que una aplicación específica puede recibir. Sin embargo, puede obtener información similar (aunque no tan expansiva) al crear algunos intentos usted mismo y luego usar las actividades queryIntentActivities, queryIntentservices y queryBroadcastReceivers de PackageManager para ver qué aplicaciones están instaladas que reaccionarán a esa intención.

10

Permítanme recomendar la aplicación "ManifestViewer". Enumera intenciones para cada aplicación instalada. https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer

Have a nice day !!

+1

Voy a comprobar hacia fuera. gracias - https://market.android.com/details?id=uk.co.ashtonbrsc.android.intentintercept&feature=search_result –

+0

Finalmente me puse a verificar esto. Gracias de nuevo. –

+0

Creo que solo enumera algunas intenciones comunes, pero no las que se usan en las aplicaciones. –

1

con el siguiente comando con mi Nexus 6 en Turrón 7.0 Tengo la lista de todos los intentos:

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

  • En primer lugar el comando abre un shell en el dispositivo y hace un volcado PackageManager de cada paquete.
  • Luego canalice esa salida a grep que solo selecciona líneas con la palabra 'filtro'.
  • Luego canalice esa salida a cut, que proporciona el texto encontrado en la 12ª posición de cualquier espacio en esa línea.
  • Entonces tubería de salida que a sort que ordena esa lista de la A a la Z.
  • Entonces tubería de salida que a uniq la que aclara Intentos duplicadas.

YMMV: pruébelo de a uno por vez. Agregue la siguiente tubería a medida que vea los resultados que desea. No estoy seguro si las versiones anteriores de adb le darán diferentes números de espacios para cut, por ejemplo.

Y, si desea los resultados de una sola paquete como Chrome puede usar:

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

+0

Buena respuesta, pero la parte del 'filtro 'no era obvia.Debes poner toda la ruta allí con algo como '" com.android.chrome /. "'. – not2qubit

+1

no hay opción 'volcar' en mi configuración de Android 4. 'dumpsys package r' funcionó para mí en su lugar. – eadmaster

Cuestiones relacionadas