1 votes

Macrodroid : Convertir le code régional "+63" en "0"

Il y a déjà une macro fonctionnelle qui fait ce qui suit :

Chaque fois que je compose/appelle un numéro avec un préfixe autre que ceux que j'ai spécifiés, une boîte de dialogue apparaît. Je voulais "filtrer" les numéros pour être averti si je devais appeler un numéro appartenant à un réseau/une entreprise différent(e).

Pour clarifier, il y a deux codes dans le préfixe. L'un est le code pays et l'autre est le code réseau. Par exemple, le code pays est +63 et le code réseau (entreprise) est 945. De plus, le code pays +63 est interchangeable avec 0 et les deux sont valides lors d'un appel. Ainsi, un numéro +63945xxx est identique à 0945xxx.

Mon problème actuel est que les préfixes à 4 chiffres (ceux commençant par 0 comme 0945, 0917, etc.) sont déjà "filtrés" par la macro existante. Cependant, les préfixes à 6 chiffres (ceux commençant par +63 comme +63945, +63917 ne sont pas filtrés), donc 0945 et +63945 qui sont virtuellement identiques obtiendront des réponses différentes (l'un affichera une boîte de dialogue et l'autre non). Ce que je recherche est un moyen de convertir d'abord +63 en 0 pour qu'il devienne un numéro à 4 chiffres que la macro peut filtrer.

Voici un lien vers ma précédente question qui peut être utilisée comme référence.

Afficher un message contextuel si sur le point d'appeler des codes régionaux exclus

Est également jointe la macro qui filtre actuellement les préfixes à 4 chiffres mais néglige ceux à 6 chiffres.

Modifier : 15/08/2020 14:10

J'ai commencé une nouvelle macro à partir de zéro juste pour être sûr. Mais le résultat dans le log semble être le même. Des exemples de numéros appelés seraient +639451234567 et 09451234567. Tous les numéros composés ont déclenché une boîte de dialogue. Voici les captures d'écran :

(https://i.sstatic.net/wksR0.png) (https://i.sstatic.net/FJTtc.png) (https://i.sstatic.net/y9Jqi.png) (https://i.sstatic.net/qnwbm.png) (https://i.sstatic.net/JTS76.png) (https://i.sstatic.net/uBuJ8.png)

Modifier : 22:30 La macro ci-dessous donnée par beeshyams fonctionne bien.

1voto

beeshyams Points 37355
  • Je ne suis pas sûr de ce qui s'est mal passé de votre côté, cela pourrait être une mauvaise configuration, une utilisation incorrecte de variables globales ou une erreur stupide. En l'absence d'informations de dépannage, c'est un jeu de devinettes.

  • Votre approche consistant à changer 63 en 0 comme dans le titre est totalement inutile.

Logique de Macro

  1. Le numéro d'appel sortant est affecté à la variable locale A en tant que chaîne (ne pas utiliser de variables globales à moins que ce ne soit nécessaire)

  2. La longueur de la chaîne dans la variable A est affectée à la variable strlen. Nous avons deux types de numéros sortants, ceux commençant par +63, qui ont une longueur de 13 chiffres et les autres commençant par 09 qui ont 11 chiffres.

  3. Nous utilisons une logique SI-SINON. Si la longueur de la chaîne est de 13 (correspondant aux numéros commençant par +65) :

a) Nous utilisons la manipulation de texte pour trouver les six premiers chiffres afin de savoir s'ils sont des codes autorisés ou non. Dans les deux cas, ils sont affectés à la variable A.

b) Si les six premiers chiffres sont des codes autorisés, aucune action n'est prise. Sinon, une boîte de dialogue d'avertissement est configurée. Cela se fait par la boucle IF imbriquée et peut être étendu pour inclure plus de codes régionaux.

  1. Retour à l'étape 2, si ce n'est pas 13 chiffres, alors les actions dans la boucle else seront effectuées. Nous examinons les 11 chiffres correspondant aux numéros de départ en 09. Mais en disant non à 13, nous incluons également d'autres cas comme la police, les pompiers, etc., qui ont 3 chiffres et pour lesquels l'avertissement continuera de s'afficher et l'effort d'exclure ce cas à 3 chiffres ne vaut pas la peine à mon avis.

  2. Pour les numéros à 9 chiffres, le même ensemble d'actions à Para 3a) et b) est exécuté.

  3. À la fin, les deux variables sont initialisées

La macro est légèrement longue en raison des commentaires, donc elle est sur deux captures d'écran, la première couvrant SI et la suivante SINON

IMG: IMG:

(Cliquez pour agrandir)

OP a confirmé que cela fonctionne comme prévu. Pour empêcher MacroDroid d'être arrêté, suivez les instructions sur dontkillmyapp.com

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