PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → [WM20] [Android] Récupérer le numéro du téléphone utilisé.
[WM20] [Android] Récupérer le numéro du téléphone utilisé.
Débuté par Cezame, 28 avr. 2015 14:31 - 15 réponses
Posté le 28 avril 2015 - 14:31
Bonjour,

Je souhaite verrouiller mon application en fonction du code IMEI et du numéro de téléphone du client.

La commande SysIMEI() me renvoie l'IMEI mais aucune fonction pour récupérer le numéro de téléphone.

Est ce que quelqu'un aurait une piste ou un bout de code pour ça?

D'avance merci pour votre aide

Cezame
Posté le 30 avril 2015 - 10:56
Bonjour,

Après des recherches sur divers forum j'ai trouvé ce code Javascript...

PUBLIC string getMyPhoneNumber()
{
RETURN ((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
.getLine1Number();
}


Mais je n'arrive pas à intégrer cette procédure Java dans mon apllication.

Comment intégrer ceci dans une procédure qui simplement me retournera le numéro de téléphone?

D'avance merci pour votre aide

Cezame
Posté le 13 mai 2015 - 10:29
Bonjour,

Est ce que quelqu'un peut m'aider à intégrer le code Java précédent dans une procédure globale de mon projet.

J'ai essayer d'utiliser le code mais à la génération j'ai une erreur.

Cezame
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 13 mai 2015 - 14:45
Bonjour,

Pour ma part, j'utilise cette méthode :

1 - Créer une procédure java avec le code suivant ci-dessous. Le cas échéant, enlever les parties relatives au devideid et operatorname.

public static void GetMyMobilePhoneNumber()
{

import android.app.*;
import android.content.*;
import android.os.*;
import android.telephony.*;
import android.widget.*;

TelephonyManager tm = (TelephonyManager) getContexteApplication().getSystemService(getContexteApplication().TELEPHONY_SERVICE);
String deviceid = tm.getDeviceId();
String operatorname = tm.getNetworkOperatorName();
String phonenumber = tm.getLine1Number();

TextView myTextView;

myTextView = (TextView) getView ("SAI_deviceid");
myTextView.setText(deviceid);

myTextView = (TextView) getView ("SAI_MyPhoneNumber");
myTextView.setText(phonenumber);

myTextView = (TextView) getView ("SAI_operatorname");
myTextView.setText(operatorname);

}

2 - Créer le ou les champs ad hoc, cachés éventuellemement, dans une fenêtre. SAI_MyPhoneNumber par exemple pour ne récupérer que le numéro de téléphone.

3 - Dans le code de fin d'initialisation de cette fenêtre appeler la fonction GetMyMobilePhoneNumber() suivi de gsMyMobilePhoneNumber = SAI_MyPhoneNumber

Bon courage,
Cdlt - Eric.
Membre enregistré
46 messages
Posté le 11 juin 2015 - 23:56
Bonjour,

Je reviens sur ce sujet, car j'ai bien fais ce qui est mentionné ici, par contre, je ne parviens pas à récupérer le numéro de téléphone.
Je n'ai pas d'erreur, mais le champ reste vide.

Avez vous une idée ?

--
Cordialement.

JC Ingénierie Conseil
11 rue Pierre & Marie Curie
26120 Chabeuil
+33 4 27 86 82 25
contact@jcingenierie.fr
http://jcingenierie.fr
Membre enregistré
92 messages
Popularité : +2 (2 votes)
Posté le 12 juin 2015 - 08:30
Bonjour,

Il me semble qu'en europe, la carte sim ne renvoi le numéro de téléphone sur Android.

Peut être pourrai tu t'envoyer a toi même un sms puis récuperer l'expéditeur de ce sms pour avoir le numéro de téléphone ?
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 12 juin 2015 - 10:31
Bonjour,

J'ai testé ce code sur différents smartphones ou version d'android sans soucis.

Pour tester, tu peux télécharger l'apk ici : http://www.yoosite.fr/download/android/GetPhoneNumber.apk
C'est 100% la copie conforme du code ci-dessus.

Voici l'archive du projet : http://www.yoosite.fr/download/android/Sauvegarde_GetPhoneNumber_2015-06-12.ZIP
Cdlt - Eric.

--
Eric DELATTRE
http://www.yoosite.fr
Posté le 15 juin 2015 - 11:15
Bonjour,

Merci pour ton aide.

J'ai testé ton code il marche parfaitement bien.

Encore merci

Cezame
Membre enregistré
41 messages
Posté le 26 juin 2015 - 09:33
Bonjour,

Avant tout un grand merci à Eric67 pour l'exemple (top).
une question Eric : pour écrire ton code java tu utilises quel outil, as tu un projet d'exemple pour que je puisse partir de quelque chose de compatible avec Windev Mobile et de simple. (par exemple ce test de récupération des infos) merci.

Retour de test :
Chez moi sur Android 5.1, nexus5 et Bouygues (le tel est d'origine, non rooté) le numéro de tel reste vide mais les autres infos getDeviceId et getNetworkOperatorName fonctionnent bien.

Comme le signal floman321 es ce le fait d’être en Europe ? ou faut il paramétrer quelque chose sur windev ou le tel.

merci a tous, bon dev

Xavier
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 29 juin 2015 - 09:21
Bonjour Xavier,

Je n'utilise aucun outil particulier pour java. En fait, j'avais récupéré le bout de code sur un forum, je ne sais plus où...

Étrange, que le numéro de téléphone reste vide. Je ne pense pas qu'il y ait un rapport avec rapport avec l'Europe. Je suis moi même en France...
Ou alors pourrait-il y avoir un rapport avec l'opérateur ? pour la part je suis sur FREE.
A vérifier avec d'autres personnes pour lesquelles le code fonctionne ; sur quel opérateur elles sont ? Et comparer avec ceux pour qui cela ne fonctionne pas...

Sinon je n'ai pas d'explication mais 2 autres choses à tester (sans aucune certitude) me viennent à l'esprit.
- Le numéro de téléphone est-il bien enregistré (généralement "moi" dans les contacts) au format international ? (+336....). Bien que je pense qu'il n'y a pas de rapport.
- J'ai observé une différence de comportement sur les permissions avec WM20. En l'occurrence, as-tu bien les permissions ad hoc ? Essaye d'ajouter android.permission.READ_CONTACT par exemple..

Cordialement - Eric.

--
Eric DELATTRE
http://www.yoosite.fr
Membre enregistré
41 messages
Posté le 29 juin 2015 - 13:00
Bonjour Eric.
Merci pour ta réponse. je viens de tester sur un nexus 5 chez FREE et ça fonctionne.

--
Cordialement,
Xavier
Membre enregistré
41 messages
Posté le 29 juin 2015 - 13:02
Bonjour Eric.
Merci pour ta réponse.
je viens de tester sur un nexus 5 chez FREE et ça fonctionne.

Donc je vais regarder si il n'y a pas un paramétrage (moi est bien dans les contact)

--
Cordialement,
Xavier
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 01 juillet 2015 - 17:46
Bonjour Xavier,
Je soupçonne qu'il puisse y avoir un rapport en fonction de l'opérateur, bien que je ne vois pas pourquoi.
Je serais curieux de pouvoir vérifier cela mais toutes mes SIM de tests sont chez FREE. Si tu as un retour d'information à ce sujet je suis preneur...
Cordialement,
Eric.

--
Eric DELATTRE
http://www.yoosite.fr
Posté le 02 juillet 2015 - 08:32
Bonjour,

bouygues telecom android xperia go et m2
pas de numéro de téléphone
Membre enregistré
9 messages
Posté le 28 janvier 2018 - 02:50
Bonjour Eric,

Il semble que les lien http://www.yoosite.fr/download/android/Sauvegarde_GetPhoneNumber_2015-06-12.ZIP est inaccessible.
Comment faire ?

Franck
Membre enregistré
26 messages
Popularité : +1 (1 vote)
Posté le 23 avril 2019 - 16:16
Eric67 a écrit :
Bonjour,

Pour ma part, j'utilise cette méthode :

1 - Créer une procédure java avec le code suivant ci-dessous. Le cas échéant, enlever les parties relatives au devideid et operatorname.

public static void GetMyMobilePhoneNumber()
{

import android.app.*;
import android.content.*;
import android.os.*;
import android.telephony.*;
import android.widget.*;

TelephonyManager tm = (TelephonyManager) getContexteApplication().getSystemService(getContexteApplication().TELEPHONY_SERVICE);
String deviceid = tm.getDeviceId();
String operatorname = tm.getNetworkOperatorName();
String phonenumber = tm.getLine1Number();

TextView myTextView;

myTextView = (TextView) getView ("SAI_deviceid");
myTextView.setText(deviceid);

myTextView = (TextView) getView ("SAI_MyPhoneNumber");
myTextView.setText(phonenumber);

myTextView = (TextView) getView ("SAI_operatorname");
myTextView.setText(operatorname);

}

2 - Créer le ou les champs ad hoc, cachés éventuellemement, dans une fenêtre. SAI_MyPhoneNumber par exemple pour ne récupérer que le numéro de téléphone.

3 - Dans le code de fin d'initialisation de cette fenêtre appeler la fonction GetMyMobilePhoneNumber() suivi de gsMyMobilePhoneNumber = SAI_MyPhoneNumber

Bon courage,
Cdlt - Eric.



Parfait ça marche merciiii!!
Mais pour les dual SIM comment utiliser myTextView.setText(phonenumber) pour récuperer les 2 numeros?