[英]How to get the wifi network interface name in java
如何在java中确定wifi网络接口名称?
既然你说你在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" />
你能说明吗? 您想要连接网络的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());
}
}
如果您正在使用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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.