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 .
- El receptor de Broadcast de Android no se ejecuta en la aplicación
- Filtro de intenciones sólo para archivos
- ¿Por qué no se lanza mi actividad por URL?
- Android - Registrar un receptor de difusión para dos intentos?
- Redireccionamiento de HTML a un protocolo personalizado solo cuando se admite la aplicación de Android compatible
- Cómo agregar un elemento de menú compartido a Galería por código
- Cómo filtrar correctamente Paquete reemplazado broadcast
- Abrir mi aplicación para un determinado archivo y extensión de URL - intento-filtro no funciona como se pretende
- Permiso de dispositivo USB y filtro de intenciones Android
- ¿Qué son exactamente los filtros de intención?
- IntentService no se está llamando
- ¿Cuál es el propósito de "android.intent.category.DEFAULT"?
- ¿Cómo puedo iniciar la actividad PRINCIPAL con la ayuda de <intento-filtro>?
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.