Как получить имя интерфейса сети Wi-Fi в java

Как определить имя сетевого интерфейса Wi-Fi в java?

Ответ 1

Поскольку вы сказали, что работаете на Android, используйте это:

WifiManager wifiManager = (WifiManager) this.getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
System.out.println(wifiInfo.getSSID());

Это вернет имя вашего WIFI.

Вы должны добавить это разрешение в свой манифест.

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

Ответ 2

Можете ли вы указать? Вы хотите SSID подключенной сети? Или имя сетевых адаптеров? Я привел пример для получения имени всех сетевых интерфейсов.

Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements())
{
    NetworkInterface networkInterface = (NetworkInterface) networkInterfaces.nextElement();
    System.out.println(networkInterface.getDisplayName());
}

Если вы хотите только выбрать интерфейс WLAN, возможно, вам нужно сделать это через JNI, иначе вы можете проверить имя для вхождений "wlan" (например, eth0, eth1 и т.д.). Я не рекомендую полагаться только на это соглашение об именах.

Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements())
{
    NetworkInterface networkInterface = (NetworkInterface) networkInterfaces.nextElement();
    if(networkInterface.getName().startsWith("wlan")) {
        System.out.println(networkInterface.getDisplayName());
    }
}

Ответ 4

Если вы используете интерфейс Wi-Fi и только интерфейс Wi-Fi, тогда синтаксический анализ /proc/net/wireless - это способ выхода на Android:

public static String getInterfaceName() {
    try
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("/proc/net/wireless")));

        // skip header
        reader.readLine();
        reader.readLine();

        // read first interesting line
        String ifLine = reader.readLine();
        reader.close();

        // extract interface name
        String ifName = ifLine.substring(0, ifLine.indexOf(':'));

        return ifName.trim();
    }
    catch(Exception e) {
        e.printStackTrace();
        return null;
    }
}