Recepción del número de la llamada entrante
Tasker mantiene un variable global denominado Número de llamada ( %CNUM
) que reflejaría el número de la llamada entrante.
Si pretende ejecutar su script cuando el dispositivo suene, puede configurar el siguiente perfil:
- Perfil: Evento → Teléfono → Timbre de teléfono → Prioridad: Máxima
-
Tarea: (Acciones): Código → Ejecutar Shell → Comando: sh FILE_PATH "%CNUM"
Sustituir FILE_PATH
con la ruta absoluta del archivo de su script. En su script, %CNUM
puede recibirse como argumento almacenando $1
en una variable. (Véase esta respuesta de Bruce Ediger para cualquier ayuda relacionada).
Ejemplo script:
#!/system/bin/sh
incoming_no="$1"
echo "$incoming_no" >> /sdcard/incoming_no.txt
Guarda el script y prueba a ejecutarlo desde una acción de ese perfil. Para una llamada entrante, crearía o anexaría el archivo incoming_no.txt con el número de la persona que llama.
Nota: Tasker admite la creación de variables globales, así que si no tienes intención de ejecutar tu script con ese perfil, utiliza la acción Variable → Establecer variable para almacenar el valor de %CNUM
en una variable global específica del usuario. Cuando llegue el momento, utilice esa variable en su script de Tasker.
Recepción del número llamado desde la llamada saliente
Tasker no tiene un soporte incorporado para esto, según me parece. No te preocupes, ya que esta respuesta por sush se puede utilizar en Tasker para nuestro objetivo. El quid de esta respuesta es: escuchar una emisión con acción android.intent.action.NEW_OUTGOING_CALL
y recibir el valor de una clave de tipo extra particular.
Tasker tiene soporte para la recepción de los intentos. Antes de empezar con el perfil, escúchame cómo he extraído el valor.
Hice una llamada a un número e inmediatamente ejecuté el siguiente comando (requiere adb en PC):
adb shell dumpsys activity
En la salida, en la sección ACTIVITY MANAGER BROADCAST STATE (dumpsys activity broadcasts)
Me he dado cuenta:
BroadcastRecord{32699300 u0 **android.intent.action.NEW\_OUTGOING\_CALL**}
act=android.intent.action.NEW\_OUTGOING\_CALL flg=0x10000030 (has extras)
extras: Bundle\[{**android.intent.extra.PHONE\_NUMBER**\=+919XXXXYYYZZ}\]
Aquí, android.intent.extra.PHONE_NUMBER
es la clave de tipo extra.
En cuanto a Tasker, configure su perfil de la siguiente manera:
-
Perfil: Evento → Sistema → Intención recibida:
- Acción:
android.intent.action.NEW_OUTGOING_CALL
- Prioridad: Máxima
-
Tarea: (Acciones): el número puede ser recuperado de la variable
%android_intent_extra_phone_number
Como de costumbre, almacene el valor de esa variable en una variable global específica del usuario utilizando Variable → Conjunto de variables y utilice esta última en su script siempre que lo desee.
Nota :
- La solución está probada en Android 4.2.1 y Android 5.0.2 (COS12).
- Por guía del usuario de Tasker, la pestaña Variables no se muestra si el Menú / Prefs / UI / Modo principiante está activado.
- El número de llamada para las llamadas entrantes puede recuperarse alternativamente escuchando la intención de emisión con la acción
android.intent.action.PHONE_STATE
y recibir el número de %incoming_number
. Utilice %state
en una condición para comprobar si su valor es RINGING o IDLE. En caso de ser el primero, obtener el valor de %incoming_number
.
0 votos
¿Cómo se ejecuta el shell script? MacroDroid puede darte el número tanto para las llamadas entrantes como para las salientes. Puedes usar esa aplicación con Secure Settings para pasar el número directamente a tu shell script o dejar que escriba un archivo y leer el archivo desde tu shell script. // Hazme saber si esto es suficiente como respuesta para ti.
0 votos
¿Qué versión de Android y qué dispositivo utilizas? ¿Está rooteado?
0 votos
Muchas gracias por tu respuesta Firelord. Yo (actualmente) uso Tasker para ejecutar este script. Funciona con MacroDroid volcando la información a un archivo de registro, y luego recuperándola de mi script, pero me gustaría que hubiera una manera menos torpe de hacerlo. Podría usar MacroDroid directamente si tuviera la capacidad de ejecutar comandos shell arbitrarios, aunque no he encontrado cómo hacerlo :/
0 votos
La versión de Android es la 4.4.2 que se ejecuta en un Samsung Galaxy S3.
0 votos
Oh, me olvidé de mencionar, sí, está rooteado.