Android – ¿Cómo obtener una lista de todos los filtros de intención disponibles?
Tengo la búsqueda de documentos Android y por alguna razón loca no soy capaz de encontrar la lista de todos los filtros de intención disponibles.
Estoy encontrando un filtro de intenciones, que haría algo así como, notificándome a través de Broadcast Receiver que una actividad en particular (navegador de ejemplo, o correo electrónico) se ha iniciado o en primer plano. Puede alguien ayudarme con eso .
- ¿Por qué no se lanza mi actividad por URL?
- El fragmento no se reanuda con su actividad después de usar el intercambio de intenciones
- BroadcastReceiver intentando devolver el resultado durante una transmisión no ordenada - PACKAGE_ADDED en Android
- ¿Cómo iniciar una aplicación sin el icono del lanzador mediante la exploración de una etiqueta NFC?
- Registro de Receptor de Difusión en Manifiesto vs. Actividad
- Integración de la aplicación con los resultados de búsqueda de Google y Chrome
- Obtenga la etiqueta NFC con NDEF Android Application Record (AAR)
- Enviar una transmisión sólo a actividades específicas
- Filtro de intenciones sólo para archivos
- Cómo recibir un archivo usando NFC (Android Beam) en Android
- Enlace profundo de Android que funciona sólo en algunos sitios web
- ¿Cuántas etiquetas de esquema y host pueden estar bajo el intento de filtro en android manifiesto?
- PACKAGE_REMOVED y luego PACKAGE_ADDED se disparan junto con PACKAGE_REPLACED Intent Action
No vas a encontrar eso. Los filtros de intención son definidos por la aplicación. Tendrías que mirar la documentación para la aplicación paritcular que te interesa.
PackageExplorer lista todos los filtros de intenciones definidos en las aplicaciones de su dispositivo
Para responder a su pregunta: cree los filtros de intención que desea utilizar para hacer que su actividad se seleccione cuando un programa esté buscando un servicio o actividad. Por lo tanto, cada actividad en un paquete define su propia lista de filtros de intención.
Me pareció útil tener una lista de todos los filtros de intenciones definidos por todas las aplicaciones de un dispositivo, por lo que sabría qué aplicaciones el sistema invocaría cuando se procesara una intención. Pongo una aplicación gratuita en Android Market, busco 'Package Explorer' que busca todas las aplicaciones que puede encontrar en tu dispositivo, decodifica el archivo AndroidManifest.xml y muestra una lista de todos los filtros de intenciones definidos por todas las aplicaciones. La tabla de todos los filtros de intención se puede ordenar por Acción, Categoría, Campos de datos (es decir, esquema o tipo de mímite), nombre del paquete o tipo de filtro de intenciones para que pueda encontrar todas las actividades en su dispositivo que responden a varias acciones o categorías.
El Explorador de paquetes también recopila todos los campos de permisos de uso del manifiesto y muestra una lista de las aplicaciones que requieren qué permisos. Así que puedes encontrar todos los paquetes que usan 'SEND_SMS' o algo así. Al hacer clic en el nombre de un paquete, se muestra el archivo AndroidManifest.xml descodificado (binario sin comprimir) del paquete.
Si está fuera del dispositivo, sólo puede ejecutar lo siguiente:
Paquete dumpsys de shell de adb r
Esto le dará una lista de todos los filtros de intenciones registrados estáticamente.
Existe una "base de datos" en http://www.openintents.org/en/ que intenta recopilar filtros de intención conocidos. También la doumentation para Intent enumera algunos.
(Respuesta parcial) IntentFilters se definen en el archivo AndroidManifest.xml contenido en el archivo .apk de la aplicación. (En el elemento XML -> -> ->, así:
No he encontrado una API para buscar todos los Intents definidos en todos los archivos .apk almacenados en un dispositivo. El sistema busca la lista de todas las intenciones en: android.content.Context.startActivity (intención de intención) Que llama a un método nativo en android.app.ActivityManagerNative.startActivity () que utiliza un mecanismo de comunicación entre procesos (IPC) (mediante una serialización de La información en un objeto 'Parcel') para buscar las intenciones e iniciar la Actividad. Así que podría encontrar cómo se hace realmente.
Parece que puede obtener acceso de lectura a archivos .apk (muchos se almacenan en /system/app/*.apk). El archivo .apk es un archivo .jar y el archivo AndroidManifest.xml está disponible en ese, por lo que un programa debe ser capaz de leer y analizar el manifiesto y encontrar el IntentFilters – pero debe haber API para hacer esto fácil.
GET_INTENTS_FILTER – se declara que se utilizará en el futuro para consultar los filtros de intenciones, consulte también http://code.google.com/p/android/issues/detail?id=3217
Sin embargo, la prioridad en el equipo de Android es pequeña. ¿Alguien puede presentar un parche?
Este mensaje es antiguo, pero para cualquiera que busque información de manifiesto de las aplicaciones instaladas en un dwld android particular esta aplicación de DIOS:
https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer
Puede comprobar la lista de acciones estándar y categorías en el sdk / platformas / android-x / data / broadcast_actions.txt
Ampliando la respuesta de Tom Fraser, la mejor manera es usando dumpsys con un grep y sort.
dumpsys activity broadcasts |grep -iE ".+\.[0-9A-Z_\-]+:$" |sort
La expresión grep asegura que sólo se capturan líneas que terminan en la intención como formato de ...blahblah.SOME_INTENT:
No puede atrapar todo, pero es un buen comienzo.