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.
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
Que tengas un buen día !!
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