網絡故障(network failure)是指由于硬件的問題、軟件的漏洞、病毒的侵入等引起網絡無法提供正常服務或降低服務質量的狀態。 Android需要添加權限以獲得Mac地址和IP地址, 在AndroidManifest.xml中: 
uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
1、獲取手機的Mac地址,即使未打開Wifi或未連接Wi-Fi也可以獲取手機的Mac地址。代碼如下: public static String getMacAddress(Context context) {
String macAddress = null;
WifiInfo wifiInfo = getWifiInfo(context);
if (wifiInfo != null) {
macAddress = wifiInfo.getMacAddress();
}
return macAddress;
}
2、獲取手機IP地址,只有在Wifi連接的情況下才能獲取IP地址,否則為0,對應的轉換IP為0.0.0.0,其中getIpAddress ()獲取IP地址,它是一個整數,需要轉換為IP地址。代碼如下: 
public static String getIpAddress(Context context) {
String IpAddress = null;
WifiInfo wifiInfo = getWifiInfo(context);
if (wifiInfo != null) {
IpAddress = intToIpAddress(wifiInfo.getIpAddress());
}
return IpAddress;
}
public static String intToIpAddress(long ipInt) {
StringBuffer sb = new StringBuffer();
sb.append(ipInt & 0xFF).append(".");
sb.append((ipInt >> 8) & 0xFF).append(".");
sb.append((ipInt >> 16) & 0xFF).append(".");
sb.append((ipInt >> 24) & 0xFF);
return sb.toString();
}
3、獲取路由器的Mac地址,僅當連接成功(廢話……)時,代碼如下: 
public static String getConnectedWifiMacAddress(Context context) {
String connectedWifiMacAddress = null;
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
List wifiList;
if (wifiManager != null) {
wifiList = wifiManager.getScanResults();
WifiInfo info = wifiManager.getConnectionInfo();
if (wifiList != null && info != null) {
for (int i = 0; i < wifilist.size();="" i++)="" {="" scanresult="" result="">get(i);
if (info.getBSSID().equals(result.BSSID)) {
connectedWifiMacAddress = result.BSSID;
}
}
}
}
return connectedWifiMacAddress;
}
獲取Mac和IP地址的完整工具代碼如下: 
package com.cpxiao.wifimacdemo;
import android.content.Context;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import java.util.List;
/**
* Created by cpxiao on 15/9/21.
*/
public class MacAddressUtils {
/**
* 獲取手機的Mac地址,在Wifi未開啟或者未連接的情況下也能獲取手機Mac地址
*/
public static String getMacAddress(Context context) {
String macAddress = null;
WifiInfo wifiInfo = getWifiInfo(context);
if (wifiInfo != null) {
macAddress = wifiInfo.getMacAddress();
}
return macAddress;
}
/**
* 獲取手機的Ip地址
*/
public static String getIpAddress(Context context) {
String IpAddress = null;
WifiInfo wifiInfo = getWifiInfo(context);
if (wifiInfo != null) {
IpAddress = intToIpAddress(wifiInfo.getIpAddress());
}
return IpAddress;
}
/**
* 獲取WifiInfo
*/
public static WifiInfo getWifiInfo(Context context) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = null;
if (null != wifiManager) {
info = wifiManager.getConnectionInfo();
}
return info;
}
public static long ipAddressToint(String ip) {
String[] items = ip.split("\\.");
return Long.valueOf(items[0]) <>24
| Long.valueOf(items[1]) <>16
| Long.valueOf(items[2]) <>8
| Long.valueOf(items[3]);
}
public static String intToIpAddress(long ipInt) {
StringBuffer sb = new StringBuffer();
sb.append(ipInt & 0xFF).append(".");
sb.append((ipInt >> 8) & 0xFF).append(".");
sb.append((ipInt >> 16) & 0xFF).append(".");
sb.append((ipInt >> 24) & 0xFF);
return sb.toString();
}
/**
* 獲取當前可連接Wifi列表
*/
public static List??> getAvailableNetworks(Context context) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
List wifiList = null;
if (wifiManager != null) {
wifiList = wifiManager.getScanResults();
}
return wifiList;
}
/**
* 獲取已連接的Wifi路由器的Mac地址
*/
public static String getConnectedWifiMacAddress(Context context) {
String connectedWifiMacAddress = null;
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
List wifiList;
if (wifiManager != null) {
wifiList = wifiManager.getScanResults();
WifiInfo info = wifiManager.getConnectionInfo();
if (wifiList != null && info != null) {
for (int i = 0; i < wifilist.size();="" i++)="" {="" scanresult="" result="wifiList.get(i);">if (info.getBSSID().equals(result.BSSID)) {
connectedWifiMacAddress = result.BSSID;
}
}
}
}
return connectedWifiMacAddress;
}
}
參考:
本文來自本站,轉載請注明本文網址: http://www.pc-fly.com/a/tongxingongju/article-348584-1.html
當今,越來越多的業務應用運行于網絡架構之上,保障網絡的持續、高效、安全的運行,成為網絡管理者面臨的巨大挑戰。 |