網(wǎng)絡(luò)故障(network failure)是指由于硬件的問(wèn)題、軟件的漏洞、病毒的侵入等引起網(wǎng)絡(luò)無(wú)法提供正常服務(wù)或降低服務(wù)質(zhì)量的狀態(tài)。 Android需要添加權(quán)限以獲得Mac地址和IP地址, 在AndroidManifest.xml中: 
uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
1、獲取手機(jī)的Mac地址,即使未打開(kāi)Wifi或未連接Wi-Fi也可以獲取手機(jī)的Mac地址。代碼如下: public static String getMacAddress(Context context) {
String macAddress = null;
WifiInfo wifiInfo = getWifiInfo(context);
if (wifiInfo != null) {
macAddress = wifiInfo.getMacAddress();
}
return macAddress;
}
2、獲取手機(jī)IP地址,只有在Wifi連接的情況下才能獲取IP地址,否則為0,對(duì)應(yīng)的轉(zhuǎn)換IP為0.0.0.0,其中g(shù)etIpAddress ()獲取IP地址,它是一個(gè)整數(shù),需要轉(zhuǎn)換為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地址,僅當(dāng)連接成功(廢話……)時(shí),代碼如下: 
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 {
/**
* 獲取手機(jī)的Mac地址,在Wifi未開(kāi)啟或者未連接的情況下也能獲取手機(jī)Mac地址
*/
public static String getMacAddress(Context context) {
String macAddress = null;
WifiInfo wifiInfo = getWifiInfo(context);
if (wifiInfo != null) {
macAddress = wifiInfo.getMacAddress();
}
return macAddress;
}
/**
* 獲取手機(jī)的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();
}
/**
* 獲取當(dāng)前可連接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;
}
}
參考:
本文來(lái)自本站,轉(zhuǎn)載請(qǐng)注明本文網(wǎng)址: http://www.pc-fly.com/a/tongxingongju/article-348584-1.html
當(dāng)今,越來(lái)越多的業(yè)務(wù)應(yīng)用運(yùn)行于網(wǎng)絡(luò)架構(gòu)之上,保障網(wǎng)絡(luò)的持續(xù)、高效、安全的運(yùn)行,成為網(wǎng)絡(luò)管理者面臨的巨大挑戰(zhàn)。 |