1、wifi连接判断
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
// 网络可用
// 在这里可以执行相关操作
Log.d("Network", "网络可用");
} else {
// 网络不可用
// 在这里可以执行相关操作
Log.d("Network", "网络不可用");
}
2、获取ip地址及信息
//获取wifi的ip地址
private String getWifiIpAddress() {
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
// 获取32位整型IP地址
int ipAddress = wifiInfo.getIpAddress();
//返回整型地址转换成“*.*.*.*”地址
return String.format("%d.%d.%d.%d",
(ipAddress & 0xff), (ipAddress >> 8 & 0xff),
(ipAddress >> 16 & 0xff), (ipAddress >> 24 & 0xff));
}
3、获取子网掩码
//获取子网掩码
public static String getWlan0Mask() {
String TAG = "lanky";
String Mask = defaultIP;
try {
Process process = Runtime.getRuntime().exec(new String[]{command});
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
do {
String line = bufferedReader.readLine();
if (line == null) {
Log.d(TAG, "test: line is null");
break;
}
if (line.startsWith("wlan0 ")) {
Mask = defaultIP;
}
Mask = getLineMask(line).equals("") ?Mask:getLineMask(line);
if (line.startsWith("p2p0 ")) {
break;
}
} while (true);
} catch (IOException e) {
e.printStackTrace();
}
return Mask;
}
private static String getLineMask(String line){
String TAG = "mask";
String IP = "";
if (line.trim().matches("inet addr:(\d{1,3}\.){3}\d{1,3}( ){2}" +
"(Bcast:(\d{1,3}\.){3}\d{1,3}( ){2}){0,1}" +
"Mask:(\d{1,3}\.){3}\d{1,3}")) {
String[] props = line.trim().split("( ){2}");
for (String prop : props) {
if (prop.length() == 0) {
continue;
}
String[] kv = prop.split(":");
if (kv[0].startsWith("inet addr")) {
Log.d(TAG, "----ipAddr: " + kv[1]);
} else if (kv[0].startsWith("Bcast")) {
Log.d(TAG, "----Bcast: " + kv[1]);
} else if (kv[0].startsWith("Mask")) {
Log.d(TAG, "----mask: " + kv[1]);
IP = kv[1];
}
}
}
return IP;
}
4、获取网关地址
//获取网关地址
public String getWifiIp() {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.M) {
return null;
}
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(this.WIFI_SERVICE);
if (!wifiManager.isWifiEnabled()) {
return null;
}
if (!wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(true);
}
DhcpInfo dhcpinfo = wifiManager.getDhcpInfo();
String serverAddress = getCorrectIPAddress(dhcpinfo.serverAddress);
return serverAddress;
}
/**
* 将获取的int转为真正的ip地址
**/
private String getCorrectIPAddress(int iPAddress) {
StringBuilder sb = new StringBuilder();
sb.append(iPAddress & 0xFF).append(".");
sb.append((iPAddress >> 8) & 0xFF).append(".");
sb.append((iPAddress >> 16) & 0xFF).append(".");
sb.append((iPAddress >> 24) & 0xFF);
return sb.toString();
}
4、获取网关地址
清单文件中添加权限、方法一或方法二都可以...
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
方法一 1、
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
@SuppressLint("MissingPermission") String macAddress = wifiManager.getConnectionInfo().getMacAddress();
方法二 2、
try {
List<NetworkInterface> networkInterfaceList = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface networkInterface : networkInterfaceList) {
byte[] macBytes = networkInterface.getHardwareAddress();
if (macBytes != null) {
StringBuilder macAddressBuilder = new StringBuilder();
for (byte b : macBytes) {
macAddressBuilder.append(String.format("%02X:", b));
}
if (macAddressBuilder.length() > 0) {
macAddressBuilder.deleteCharAt(macAddressBuilder.length() - 1);
}
String macAddress = macAddressBuilder.toString();
// 处理获取到的MAC地址
}
}
} catch (Exception e) {
e.printStackTrace();
}