PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV Mobile 2024 → Connaitre l'adresse Mac du point d'accès Wifi sur lequel le mobile est connecté
Connaitre l'adresse Mac du point d'accès Wifi sur lequel le mobile est connecté
Started by 4Ldiesel, Oct., 07 2019 2:10 PM - 10 replies
Registered member
128 messages
Popularité : +5 (5 votes)
Posted on October, 07 2019 - 2:10 PM
B'jour,

Je voudrais connaitre l'adresse Mac du point d'accès Wifi sur lequel le mobile est connecté.

La fonction WiFiInfoConnexion() ne donne pas ce renseignement.

Quelqu'un.e aurrait-il.elle une astuce ou un bout de code ?

Merci

Bon dev

Pierre
Posted on October, 07 2019 - 2:52 PM
je crois que la fonction WiFiInfoConnexion() donne bien ce renseignement avec la constante wifiBSSID
Registered member
128 messages
Popularité : +5 (5 votes)
Posted on October, 07 2019 - 5:57 PM
Bonjour stef1811,

Merci pour ta réponse.

Que je mette en paramètre la constante wifiBSSID ou wifiAdresseMac , la valeur retournée par la fonction est "02:00:00:00:00:00".

La permission ACCESS_WIFI_STATE est bien présente dans le tableau des permissions lors de la génération de l'application. Je ne vois pas pourquoi le résultat est "02:00:00:00:00:00" !

Si tu as une autre idée ?

Cordialement

Pierre
Registered member
24 messages
Posted on October, 08 2019 - 9:45 AM
Bonjour,

voici un code qui fonctionne dans mon application sous WM 23 :

// ...
#import <SystemConfiguration/CaptiveNetwork.h>

// ...
void NET_WifiInfos()
{
// ...
NSString *currentSSID = @"";
NSString *currentBSSID = @"";

// ...
CFArrayRef myArray = CNCopySupportedInterfaces();
if (myArray != nil)
{
// Nom de la première interface
CFStringRef interfaceName = ((CFStringRef) CFArrayGetValueAtIndex(myArray, 0));

// Récupère les infos
CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(interfaceName);
if (myDict != nil)
{
NSDictionary *dict = (NSDictionary*) CFBridgingRelease(myDict);
currentSSID = [dict valueForKey:@"SSID"];
currentBSSID = [dict valueForKey:@"BSSID"];
}
}

// Fonction Windev pour récupérer les données
NET_WifiCallback(currentSSID, currentBSSID);
}


Cordialement

Jean-Pierre
Posted on October, 08 2019 - 3:17 PM
Je viens de tester chez moi cela fonctionne correctement
Info(WiFiInfoConnexion(wifiSSID + wifiBSSID + wifiAdresseIP + wifiAdresseMac + wifiVitesse + wifiIdRéseau))






L'adresse mac "02:00:00:00:00:00" est retournée par Android pour le module wifi du telephone
Registered member
128 messages
Popularité : +5 (5 votes)
Posted on October, 08 2019 - 5:58 PM
B'jour,

Pour stef1811:
moi j'ai "02:00:00:00:00:00" partout. Quelle est ta version de Windev Mobile, pour quelle version minimale d'Android tu compiles et quelle est la version Android sur ton tel ?

Pour Jean-Pierre:
J'essaierai ton code si je n'arrive pas à faire fonctionner WiFiInfoConnexion()


Merci
Pierre
Posted on October, 08 2019 - 6:14 PM
WM 24 75n#
android 9 sur mon tel
la version minimale d'Android 4.0 mais ça n'a pas d'importance
Registered member
128 messages
Popularité : +5 (5 votes)
Posted on October, 09 2019 - 2:24 PM
B'jour Stef1811,

Merci de ta réponse.

Pour être plus précis, c'est une application en qui est en WM V21 et que je teste sur mon téléphone sous Android 9. Ensuite, je met à jour cette appli sur 3 tablettes chez mon client. Voici ce que j'ai constaté sur le fonctionnement de la fonction WiFiInfoConnexion(wifiBSSID) sur Windev Mobile V21 et V24:







Il se passe quelque chose avec Android 9. J'ai donc une dernière question: est-ce que sur ton Android 9 si tu actives ou désactives le GPS comment réagit la fonction WiFiInfoConnexion(wifiBSSID) ?

Merci

Pierre
Posted on October, 09 2019 - 2:33 PM
Effectivement l'info n'est pas remontée si position GPS désactivée
Si tu veux que le bug soit corrigé sur la V24 je te conseille de le signaler rapidement au ST avant qu'il ne boucle la version
Posted on October, 11 2019 - 12:31 PM
4Ldiesel a formulé la demande :
B'jour,

Je voudrais connaitre l'adresse Mac du point d'accès Wifi sur lequel le
mobile est connecté.

La fonction WiFiInfoConnexion() ne donne pas ce renseignement.

Quelqu'un.e aurrait-il.elle une astuce ou un bout de code ?

Merci

Bon dev

Pierre


bonjour,

pouvez-vous essayer ceci :

// **********************************
// ********* code java *********
// **********************************
import android.net.wifi.*;
import android.content.Context;
import android.net.DhcpInfo;
import java.util.List;

import java.lang.Exception;
import android.util.Log;

public static String getCurrentInformation(int nTypeInformation)
{
try{
// Variables
Context tmpContext = getContexteApplication();
WifiManager tmpManager =
(WifiManager)tmpContext.getSystemService(android.content.Context.WIFI_SERVICE);
WifiInfo tmpInfo = tmpManager.getConnectionInfo();
DhcpInfo tmpDHCP = null;

if (tmpInfo != null)
{
switch(nTypeInformation)
{
// BSSID
case 1:
if (tmpInfo.getBSSID() != null)
return tmpInfo.getBSSID();
else
return "";
// Adresse MAC
case 2:
if(tmpInfo.getMacAddress() != null)
return tmpInfo.getMacAddress();
else
return "";
default :
return "";
}
}
else {
return "";
}
}
catch(Exception e) {
gsError = e.toString();
Log.e("WM",gsError);
return "";
}
}
//*************************************
public static String wifiErreurInfo(){
return gsError;
}

static String gsError = "";

// **************************************
// ********* code windev *********
// **************************************
CONSTANTE
// Constantes pour le réseau sur lequel on est connecté
CURRENT_BSSID = 1
CURRENT_MACADDR = 2
FIN


Info(getCurrentInformation(CURRENT_MACADDR))
Info(getCurrentInformation(CURRENT_BSSID))

--
Cordialement JeAn-PhI
Registered member
128 messages
Popularité : +5 (5 votes)
Posted on October, 11 2019 - 6:00 PM
Bonjour stef1811,
Merci de ta dernière réponse, on a le même résultat.

Bonjour JeAn-PhI,
Avec ton code Java, j'obtiens le même comportement sur mon téléphone android 9 qu'avec la fonction WM WiFiInfoConnexion(wifiBSSID) (je n'ai pas testé sur les tablettes avec Android 4.4, 5.1 et 7.1) soit:

WM V21:
Wifi activé et GPS Activé ou pas -> "02:00:00:00:00:00"

WM V24:
Wifi activé et GPS Activé -> "90:94:e4:f9:de:75" -> OK
Wifi activé et GPS pas Activé -> "02:00:00:00:00:00"

Ceci ne me surprend pas car j’imagine que WM implémente plus ou mois le même code Java.

Comme le suggère stef1811, je vais le signaler au ST pour la dernière V24 et peut être la V25 s'il n'ont rien changé dans leur code.

Merci à tous
Pierre