package com.org.macaddress;
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<ScanResult> 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<ScanResult> wifiList;
if (wifiManager != null) {
wifiList = wifiManager.getScanResults();
WifiInfo info = wifiManager.getConnectionInfo();
System.out.println("====== info =====getSSID:"+info.getSSID()
+" getBSSID:"+info.getBSSID()
+" getMacAddress:"+info.getMacAddress()
+" getIpAddress:"+info.getIpAddress()
+" getNetworkId:"+info.getNetworkId()
+" getRssi:"+info.getRssi()
+" getHiddenSSID:"+info.getHiddenSSID()
+" getSupplicantState:"+info.getSupplicantState());
if (wifiList != null && info != null) {
for (int i = 0; i < wifiList.size(); i++) {
ScanResult result = wifiList.get(i);
System.out.println("====== result =====BSSID:"+result.BSSID
+" SSID:"+result.SSID
+" level:"+result.level);
if (info.getBSSID().equals(result.BSSID)) {
connectedWifiMacAddress = result.BSSID;
}
}
}
}
return connectedWifiMacAddress;
}
}
获取网络信息,需要以下几个权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
就完成了。
网友评论