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 .

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.

  • Detectar el compartidor utilizado para compartir contenido
  • Android IntentService no puede instanciar clase; Sin constructor vacío
  • "La actividad exportada no requiere permiso" al intentar iniciar desde un URI
  • Abrir URL de Facebook con la aplicación de Facebook
  • Android Lanzamiento o presentación de otra aplicación a través de Intent
  • Android - BroadcastReceiver no recibe intenciones personalizadas
  • Filtro de intenciones usando path, pathPrefix o pathPattern
  • No se puede recibir la intención de difusión de UsbManager.ACTION_USB_DEVICE_ATTACHED / UsbManager.ACTION_USB_DEVICE_DETACHED
  • Cómo implementar mi propio esquema URI en Android
  • Cómo compartir imagen + texto juntos usando ACTION_SEND en android?
  • Android Intent-filter para GEO-URI
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.