+-
在Android上获取Wifi接口名称
我目前正在开发一种无线嗅探器.为了实现这一点,我使用为arm编译的tcpdump二进制文件.但它假设我知道Wifi接口的名称.

根据SDK文档NetworkInterface提供了一个getName()方法.
我计划使用这种方法,所以第一步是获取与我的wifi接口相对应的NetworkInterface对象.
为此,我使用WifiInfo获取ip地址,然后获取与此IP对应的InetAddress,最后通过使用静态方法getByInetAddress(InetAddress地址)获取NetworkInterface的实例.

这是我的代码:

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());

输出 :

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

但我除了以下之类的东西:

eth0

我也尝试了isVirtual()方法,但它没有编译,我收到一条错误消息,说明方法isVirtual()没有为NetworkInterface类型定义.
我不明白发生了什么……
任何帮助将不胜感激.

最佳答案
试试这个

for(Enumeration<NetworkInterface> list = NetworkInterface.getNetworkInterfaces(); list.hasMoreElements();)
    {
            NetworkInterface i = list.nextElement();
            Log.e("network_interfaces", "display name " + i.getDisplayName());
    }
点击查看更多相关文章

转载注明原文:在Android上获取Wifi接口名称 - 乐贴网