如何在java中确定wifi网络接口名称?
答案 0 :(得分:3)
既然你说你在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" />
答案 1 :(得分:1)
你能说明吗?您想要连接网络的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());
}
}
答案 2 :(得分:0)
答案 3 :(得分:-1)
如果您正在使用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;
}
}