Obtenir le nom de L'Interface Wifi sur Android

je suis en train de développer une sorte de renifleur wifi. Pour ce faire, j'utilise un binaire tcpdump compilé pour arm. Mais je suppose que je connais le nom de L'Interface Wifi.

, Selon la documentation du kit de développement cartes réseau fournir une méthode getName ().

Je prévois d'utiliser cette méthode, donc la première étape est d'obtenir L'objet NetworkInterface correspondant à mon interface wifi.

Pour faire ce que je utilisez WifiInfo pour obtenir l'adresse ip, puis obtenez une adresse Inetadress correspondant à cette adresse IP et finalement obtenez une instance D'Interfaceréseau en utilisant la méthode statique getByInetAddress(adresse Inetadress).

Voici mon code:

WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
byte[] bytes = BigInteger.valueOf(ipAddress).toByteArray();
InetAddress addr = InetAddress.getByAddress(bytes);
NetworkInterface netInterface = NetworkInterface.getByInetAddress(addr);
Log.e("MyTemp",netInterface.getName());

La sortie :

SSID: Nancy-Universite, BSSID: 00:19:30:6a:a9:40, MAC: B4:07:F9:D5:7C:8C, Supplicant    state: COMPLETED, RSSI: -80, Link speed: 11, Net ID: 6

mais je sauf quelque chose comme:

eth0

j'essaye aussi la méthode isVirtual () mais elle ne compile pas, et j'obtiens une erreur le message disant que la méthode isVirtual () n'est pas défini pour le type NetworkInterface. Je ne comprends pas ce qui se passe...

Toute aide sera apprécier.

3
demandé sur Cœur 2011-05-12 19:54:30

4 réponses

Essayez cette

for(Enumeration<NetworkInterface> list = NetworkInterface.getNetworkInterfaces(); list.hasMoreElements();)
    {
            NetworkInterface i = list.nextElement();
            Log.e("network_interfaces", "display name " + i.getDisplayName());
    }
1
répondu angadsg 2011-06-04 17:55:48

Tout ce que vous avez à faire est de changer

Log.e("MyTemp",netInterface.getName());

à

Log.e("MyTemp",netInterface.getDisplayName());
3
répondu robquad 2011-07-18 15:53:45

utilisez ceci: Chaîne nom_interface = SystemInfo.getInstance().getProperty ("wifi.interface");

ça va marcher..

1
répondu Harshit Syal 2012-07-09 06:44:03

vous pouvez appeler /system/ip link et analyser les résultats.

bash-3.2# ip link
ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: usb0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 6e:3d:7a:3a:62:ee brd ff:ff:ff:ff:ff:ff
3: usb1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether da:bb:3f:04:1b:cd brd ff:ff:ff:ff:ff:ff
4: sit0: <NOARP> mtu 1480 qdisc noop state DOWN
    link/sit 0.0.0.0 brd 0.0.0.0
5: ip6tnl0: <NOARP> mtu 1460 qdisc noop state DOWN
    link/tunnel6 :: brd ::
6: ifb0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN qlen 32
    link/ether 76:3c:4e:23:cc:f8 brd ff:ff:ff:ff:ff:ff
7: ifb1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN qlen 32
    link/ether 02:17:54:31:ff:bd brd ff:ff:ff:ff:ff:ff
8: tun: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500
    link/ether b2:b7:11:da:7c:6a brd ff:ff:ff:ff:ff:ff
16: tiwlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 100
    link/ether 40:fc:89:e4:67:4c brd ff:ff:ff:ff:ff:ff
0
répondu Chloe 2012-03-01 03:49:07