关于android 获取mac地址

本文介绍了在Android设备上获取MAC地址的过程,包括等待WiFi启动、主动开启WiFi以获取MAC地址,以及如何在不同网络环境下获取MAC地址。同时提供了代码示例,并强调了所需权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值