我正在尝试在android中编码以返回所有设备的名称及其在wifi上的IP。我在如何解决这个问题上遇到了麻烦。所有在线示例仅返回localhost及其信息。即
try {
InetAddress localhost = InetAddress.getLocalHost();
System.out.println(" IP Addr: " + localhost.getHostAddress());
// Just in case this host has multiple IP addresses....
InetAddress[] allMyIps = InetAddress.getAllByName(localhost.getCanonicalHostName());
if (allMyIps != null && allMyIps.length > 1) {
System.out.println(" Full list of IP addresses:");
for (int i = 0; i < allMyIps.length; i++) {
System.out.println(" " + allMyIps[i]);
}
}
} catch (UnknownHostException e) {
System.out.println(" (error retrieving server host name)");
}
try {
System.out.println("Full list of Network Interfaces:");
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
NetworkInterface intf = en.nextElement();
System.out.println(" " + intf.getName() + " " + intf.getDisplayName());
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
System.out.println(" " + enumIpAddr.nextElement().toString());
}
}
} catch (SocketException e) {
System.out.println(" (error retrieving network interface list)");
}
这不一定是我想要的,因为我想要返回wifi上的所有设备。
我不知道怎么回事。 请帮帮忙,谢谢!
答案 0 :(得分:0)
WifiManager 此类提供用于管理Wi-Fi连接各个方面的主要API。通过调用Context.getSystemService(Context.WIFI_SERVICE)
获取此类的实例。它涉及几类物品:
已配置网络的列表。可以查看和更新列表,并可以修改各个条目的属性。
当前有效的Wi-Fi网络(如果有)。可以建立或拆除连接,并可以查询有关网络状态的动态信息。
接入点扫描的结果,包含足够的信息来决定要连接的接入点。
它定义了在Wi-Fi状态发生任何变化时广播的各种Intent动作的名称。
WifiInfo 描述任何处于活动状态或正在设置的Wifi连接的状态。
示例:强>
WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
int ip = wifiInfo.getIpAddress();
String ipAddress = Formatter.formatIpAddress(ip);
String macAddress = wifiInfo.getMacAddress();
确保您已使用以下内容修改了清单:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<强>来源:强>
1. WifiManager
2. WifiInfo API