studio startactivity intent developer desde boton activity abrir android android-intent

android - startactivity - Listar filtros de intención para paquetes instalados



intent-filter (3)

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.

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?

Disculpe si se trata de un duplicado de preguntas similares, como la lista de actividades de una aplicación y filtros de intenciones. y Android - ¿Cómo obtener una lista de todos los filtros de intención disponibles?


AFAIK no hay forma 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.



Usando el siguiente comando con mi Nexus 6 en Nougat 7.0 obtuve la lista de todas las intenciones:

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

  • Primero, el comando abre un shell en su dispositivo y realiza 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 para cut que da el texto encontrado en la posición 12 de cualquier espacio en esa línea.
  • A continuación, canalice esa salida para sort que ordena esa lista de la A a la Z.
  • Luego canalice esa salida a uniq que borra las Intenciones duplicadas.

YMMV: pruébalos uno a la 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 quiere los resultados de un solo paquete como Chrome, puede usar:

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