http://www.eoeandroid.com/thread-248775-1-1.html?_dsign=b5a72b86
Mac address的获取前提及方法,要得到Mac address,要WiFi启动,重启手机后又要打开WiFi,这个地址与网络无关,不可改变,不能由用户自己设定。
问:1.在打开WIFI的时候取到mac地址
2.关闭wifi,没有重启手机,任然能取到mac
3.重启之后,不打开wifi,取不到mac地址,这是什么回事呢?望知道的大牛能帮下,先谢谢了!
4.重启之后,不打开wifi,打开2G网络,还是取不到mac地址,什么原因?难道2G网络下,不分配mac地址?
手机android 4.0d的系统、2.2下的也测试过、小米二也测试过,都取不到mac地址!
答:
因为WiFi的Mac address是一个被动资讯。一般在开机后,不会主动上报到系统裡。要待WiFi硬件启动后,才会把有关Mac address资料记载入系统去。所以要得到Mac address,一是等待WiFi启动,一是在程序中主动启动WiFi,得到Mac address后再把WiFi关掉。
我用的是后者方法。
[mw_shl_code=java,true]
public String macAddress=null;
public void getWifiMacAddress(Context context) {
final WifiManager wifi=(WifiManager)c.getSystemService(Context.WIFI_SERVICE);
if(wifi==null) return;
WifiInfo info=wifi.getConnectionInfo();
this.macAddress=info.getMacAddress();
if(this.macAddress==null && !wifi.isWifiEnabled()) {
new Thread() {
@Override
public void run() {
wifi.setWifiEnabled(true);
for(int i=0;i<10;i++) {
WifiInfo _info=wifi.getConnectionInfo();
macAddress=_info.getMacAddress();
if(macAddress!=null) break;
Thread.sleep(500);
}
wifi.setWifiEnabled(false);
}
}.start();
}
}
[/mw_shl_code]
要留意需要下边的Permission
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>