1 votes

Comment un script shell peut-il obtenir le numéro d'un appel entrant/sortant ?

Nouvel utilisateur de Montréal, Canada !

J'ai donc un script shell qui s'exécute lorsqu'un appel arrive, et un autre qui s'exécute lorsque je passe un appel. Comment ce script peut-il obtenir le numéro de téléphone de l'appelant / du numéro appelé ? La lecture de la sortie de logcat ne le montre pas.

0voto

Firelord Points 23064

Réception du numéro de l'appelant à partir d'un appel entrant

Tasker maintient un variable globale nommé Numéro d'appel ( %CNUM ) qui reflèterait le numéro de l'appelant pour l'appel entrant.

Si vous avez l'intention d'exécuter votre script lorsque l'appareil sonne, vous pouvez configurer le profil suivant :

  • Profil : Événement → Téléphone → Sonnerie du téléphone → Priorité : la plus élevée
  • Tâche : (Actions) : Code → Exécuter le shell → Commande : sh FILE_PATH "%CNUM"

    Remplacer FILE_PATH avec le chemin de fichier absolu de votre script. Dans votre script, %CNUM peut être reçu comme un argument en stockant $1 dans une variable. (Voir cette réponse par Bruce Ediger pour toute aide connexe).

    Exemple de script :

    #!/system/bin/sh
    incoming_no="$1"
    echo "$incoming_no" >> /sdcard/incoming_no.txt

    Enregistrez le script et essayez de l'exécuter à partir d'une action dans ce profil. Pour un appel entrant, il créera ou ajoutera le fichier incoming_no.txt avec le numéro de l'appelant.

Note : Tasker supporte la création de variables globales, donc si vous n'avez pas l'intention d'exécuter votre script avec ce profil, utilisez l'action Variable → Variable Set pour stocker la valeur de %CNUM dans une variable globale spécifique à l'utilisateur. Dès que le moment est venu, utilisez cette variable dans votre script à partir de Tasker.

Réception du numéro appelé à partir d'un appel sortant

Tasker n'a pas de support intégré pour cela, il me semble. Ne vous inquiétez pas, puisque cette réponse par sush peut être utilisé dans Tasker pour notre objectif. L'essentiel de cette réponse est : écouter une diffusion avec une action android.intent.action.NEW_OUTGOING_CALL et recevoir la valeur d'une clé extra type particulière.

Tasker a soutien pour les intentions de réception. Avant de commencer avec le profil, écoutez-moi sur la façon dont j'ai extrait la valeur.

J'ai passé un appel à un numéro et j'ai immédiatement exécuté la commande suivante (qui requiert adb en PC) :

adb shell dumpsys activity

Dans la sortie, sous la section ACTIVITY MANAGER BROADCAST STATE (dumpsys activity broadcasts) J'ai remarqué :

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}\]

Ici, android.intent.extra.PHONE_NUMBER est la clé du type supplémentaire.

Pour ce qui est de Tasker, configurez votre profil de la manière suivante :

  • Profil : Événement → Système → Intent reçu :

    • Action : android.intent.action.NEW_OUTGOING_CALL
    • Priorité : la plus élevée
  • Tâche : (Actions) : le numéro peut être récupéré à partir de la variable

    %android_intent_extra_phone_number 

    Comme d'habitude, stockez la valeur de cette variable dans une variable globale spécifique à l'utilisateur en utilisant Variable → Variable Set et utilisez cette dernière dans votre script quand vous le souhaitez.

Note :

  • La solution est testée sur Android 4.2.1 et Android 5.0.2 (COS12).
  • Par guide de l'utilisateur de Tasker, l'onglet Variables n'est pas affiché si Menu / Prefs / UI / Beginner Mode est activé.
  • Le numéro de l'appelant pour les appels entrants peut aussi être récupéré en écoutant l'intention de diffusion avec l'action android.intent.action.PHONE_STATE et recevoir le numéro de %incoming_number . Utilisez %state dans une condition pour vérifier si sa valeur est RINGING ou IDLE. Si c'est le cas, récupérez la valeur dans %incoming_number .

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X