Este tutorial es en realidad la unión de dos. Uno escrito por el miembro de Xda.developers Badhri y sacado del foro de esa web , y el otro escrito unos post más abajo por nuestro compañero de foro, Maid450. Respecto del tutorial de Xda me he tomado la libertad eso si de darle una traducción libre además de que no esta el texto entero, he seleccionado lo que me parecía más interesante
Enlace al post original de Xda Developers:
http://forum.xda-developers.com/show....php?t=2489449
INTRODUCCIÓN:
Básicamente y para los que no tengan ni idea del tema lo que conseguimos con los intent es que Tasker pueda utilizar una acción de esa app como si fuera suya. Para ello utiliza la acción Enviar Intent.
Del otro lado está el Obtener Intent. Esto quiere decir que en ciertos casos Tasker podrá “escuchar” un intent de una app, y por tanto que cuando esta app realice ese intent Tasker reaccione como lo haría con un contexto de evento.
GUIA-TASKER: ACCIÓN ENVIAR INTENT
Para ser franco, antes de usar Tasker y su foro de Grupos de Google, no tenía ni idea de lo que era una cosa llamada "Intent". Así que no soy un experto en esto. A pesar de que el título del hilo dice GUIDE, no es, eh…, exactamente eso. Esta más orientado a servir de ejemplo y estos ejemplos, que estoy a punto de mostrar aquí, no son míos tampoco. Con el conocimiento que recogí del foro de Tasker, busqué en la web y descubrí estas cosas. Así que el verdadero mérito es para el que hizo el trabajo duro inicial y consiguió hacer estos intents.
Intent Android
Un Intent, IMO, es la manera que tiene Android de hacer posible la comunicación entre aplicaciones. Un Intent en si, es como un paquete de información con ciertos datos que el sistema operativo y las aplicaciones pueden "lanzar" y a su vez pueden definir filtros para recibir los que les interesen. Si una aplicación tiene esto debidamente implementado, se puede, en esencia, invocar una parte de ella desde otra aplicación. El intent puede invocarse desde dentro de una aplicación Android (a través de código de Java, un desarrollador de aplicaciones muy probablemente lo haría) o desde la parte Linux del teléfono a través del shell usando el comando 'am'. Hay unos pocos programas, como Tasker y Llama, que permiten a los usuarios construir un Intent al usuario final y lo envían hacia fuera.
Para más información sobre los intents echa un vistazo a:
1
http://developer.android.com/referen...nt/Intent.html
2
http://stackoverflow.com/questions/8...s-available-in
Tasker-acción Enviar Intent (tareas -> Acción -> Miscelaneo -> Enviar Intent):
El uso de este pequeña acción en Tasker, podría abrir una nueva dimensión para ti. La acción enviar Intent tiene los siguientes campos. Consulta la Guía oficial Tasker para ver la función de cada uno de estos campos (
http://tasker.dinglisch.net/userguide/en/intents.html )
ESTRUCTURA DE UN INTENT:
- ficha de un Intent:
Nombre la app o categoría del intent:
Pequeña descripción:
Código:
Acción:
Categ:
Tipo Mime:
datos:
extra:
extra:
paquete:
Clase:
Objetivo:
Acción: La acción a realizar (sorpresa), es opcional, pero en la mayoría de los casos.
Hay acciones genéricas del sistema (que son las que se usan con mayor frecuencia) como por ejemplo android.intent.action.VIEW para "ver" algo (abrir la ficha de un contacto, ver una imágen, una web, abrir un fichero de texto),android.intent.action.EDIT para "editar" algo (abrir un editor de imágenes para retocar una foto, un fichero de texto para editarlo, la información de un contacto), android.intent.action.SEND y android.intent.action.SENDTO para enviar datos (es lo que manda el sistema cuando le damos al botón "compartir" de una app, por ejemplo, la diferencia entre SEND y SENDTO en principio es que en la segunda especificas un destino concreto y en la primera no, pero por lo que diré despues la verdad es que es confuso y no le veo mucho sentido a que existan las 2...).
Las aplicaciones también pueden definir sus propias acciones para hacer cosas específicas de su aplicación, estas suelen empezar por el paquete de su app, por ejemplo: "au.com.shiftyjelly.pocketcasts.action.PLAY" para emular el "play" en pocketcasts.
Categoría: añade más información sobre la acción del intent, casi siempre será "android.intent.category.DEFAULT" pero en determinados casos puede ser otra.
Tipo Mime: indica el tipo de datos que contiene el intent, es opcional, pero si por ejemplo queremos enviar texto y no especificamos una aplicación concreta, poniendo aqui el tipo "text/plain" nos mostrará una lista de las apps que pueden enviar texto (email, mensajería instantánea...), mientras que si no lo ponemos podría mostrar también apps que solo permiten enviar imágenes.
Datos: Los datos del intent, aunque pudiera parecer lógico que se usara para poner por ejemplo el texto en una acción SEND de texto, los datos deben ser una URI (formato tipo URL), con lo que se usa para decir por ejemplo que telefono marcar en una accion DIAL (tel:XXXX), la ruta del fichero a editar en una accion EDIT (file:///ruta/a/fichero), etc...
Extras: Datos adicionales inluidos en el intent. Se pueden usar para cualquier cosa dependiendo de la acción y la aplicación, Tasker por ejemplo los usa entre otras para comunicar las variables entre Tasker y sus plugins, por ejemplo. Estos tienen tela porque no forman parte de los filtros, con lo que no se puede saber si una aplicación los usa si el desarrollador no lo documenta.
Igual que las acciones, los hay estándar del sistema como por ejemplo "android.intent.extra.SUBJECT" o "android.intent.extra.TEXT" para indicar el asunto y/0 texto para un email o mensajería instantanea o cada aplicación puede definir sus propios. Tasker solo permite enviar 2.
Paquete: Permite especificar hacia que que app va dirigida el intent, evitando que otras respondan a el.
Clase: En caso de que una app tenga varias pantallas (activities) o servicios que puedan responder a un mismo intent con finalidades distintas, permite especificar exactamente a cual va dirigida.
Por ejemplo en el que has puesto de "OpenVPN", la cción VIEW dirigida hacia la clase "net.openvpn.openvpn.OpenVPNClient" conecta a la VPN, mientras que el mismo intent dirigido hacia "net.openvpn.openvpn.OpenVPNDisconnect" la desconecta.
Target: Indica si el objetivo del intent es una pantalla de una app (activity), un servicio en segundo plano (service) o un "escuchador de difusiones" (Broadcast receiver, en español suena fatal).
Para los usos de un usuario normalmente será una activity.
Como veis, la mayoría de los datos son opcionales, pero nos permiten refinar más exactamente lo que queremos hacer como he ido explicando por ejemplo en el tipo mime, la categoría, el paquete, etc...
Pongamos por ejemplo el de enviar texto que esta en el listado:
Código:
Action:android.intent.action.SEND
Cat: Default
Mime Type:text/plain
Data:
Extra:android.intent.extra.TEXT: MY TEST TEXT
Extra:
Package:
Class:
Target:Activity
Con esta información Android saca su megafono y dice: "se buscan aplicaciones que tengan activities que puedan hacer android.intent.action.SEND con datos de categoría Default y tipo text/plain" las aplicaciones en cuestion (Twitter, Whatsapp, Gmail, etc...) responderán, por lo cual android mostrará la típica lista de decisión "con qué aplicación de estas quieres hacer esto?" y al elegir una, android le envía el intent completo con todos sus datos, los extras, etc...
Si se enviase el mismo intent especificando el package de twitter, solo esta podría contestar y por eso se enviaría directamente a la app sin mostrar la lista.
GET INTENT:
Esta es la otra cara de los intents. No sólo los podemos enviar sino también escuchar.
Tasker-Contexto Intent Recibido (Contextos>Evento>Sistema>Intent Recibido)
El tema de los intents broadcast (difusión) los usa el sistema operativo para muchas cosas de "interés general" para otras aplicaciones, por ejemplo "android.intent.action.BATTERY_CHANGED", "android.intent.action.ACTION_POWER_CONNECTED" , "android.intent.action.BOOT_COMPLETED", etc... a los cuales se suscriben ciertas apps que necesitan saber esa información (os suenan de contextos de tasker? ;) ese es el motivo de que estos no gasten prácticamente batería, Tasker no está preguntando cada X tiempo si pasan esas cosas, el propio sistema lo va diciendo tanto si está tasker instalado como si no, y tasker solo se pone a escucharlos si se definen perfiles que los usen)
LIMITACIONES CONOCIDAS:
1 ) Sólo se dispone de dos campos adicionales . Si usted requiere más, entonces usted tendrá que usar la acción Ejecutar consola y luego usar el comando ' am ' .
2 ) No se puede utilizar el campo de Datos y Tipo Mime campo juntos ( ambos no pueden tener valor para la acción , al mismo tiempo). Pero el desarrollador de Tasker dijo que él va a corregir en el futuro.
CONSEJOS BÁSICOS PARA OBTENER UN INTENT:
1 ) Hay tres tipos de objetivos : Receptor Broadcast, Actividad y Servicio. Nos ocuparemos en su mayoría del tipo Actividad en este hilo. (No he explorado las otras dos aún)
2 ) En general , si tienes una aplicación que deseas iniciar / hacer - algo - con , y no sabes lo que intent utilizar, a entonces:
a-Busca en Google: “Android + nombre + aplicación App Intents “ . Ejemplo : Android Facebook Intents de aplicación
b-Si el desarrollador de la aplicación es amable y atento , mandale un mail diciendo que deseas " invocar " tal o cual actividad a través de Tasker (o una aplicación similar ) y si esto es posible o no. Si no, pregúntale si lo hará posible en el futuro. Esta es tu mejor baza. Si existe un foro para la aplicación, entonces utilízalo.
c-Hay ciertas aplicaciones como “Intent Intercep” ( que intercepta de hecho una serie de intents ) , Android System Info ( que le ayuda a ver al archivo de manifiesto de la aplicación que contiene los filtros de los intents de esa app) u otras aplicaciones similares, que te ayudarán a identificar la estructura de tu acción de Tasker ' Enviar Intent ".
d-Pida ayuda en Tasker - Grupos de Google ( o en este subforo jeje).
e-Utiliza el Logcat para olfatear que hay de nuevo , bajo el capó ( Nunca he probado esto. Puede que sea lo que debería hacer a partir de ahora )
3 ) Hay otros usos de Intents ( aparte de los Intents sólo orientados a las aplicaciones ) , como el establecimiento de algunas configuraciones en las rom CyanogenMod . No tengo la menor idea sobre las mismas. Si lo sabes, entonces por favor iluminame .
4 ) Todos estos ejemplos han sido testados y probados en Android 4.3 Stock rom – Acceso Root - BusyBox instalado
Como dice el autor de esta guía por favor si conoces más intents o cosas relacionadas con su funcionamiento por favor compártelo con los demás. De esta manera conseguiremos tener una extensa recopilación de intents para uso y disfrute de todos.
-En el siguiente post tienes un listado completo de intents y sus fichas.-
FDO: Mlesir.