代码之家  ›  专栏  ›  技术社区  ›  Gubatron

如何获取WiFi网络接口的MAC地址?

  •  39
  • Gubatron  · 技术社区  · 14 年前

    Android的java.net.networkinterface实现似乎没有
    byte[]getHardwareAddress()方法 http://developer.android.com/reference/java/net/NetworkInterface.html

    我发现有几个论坛上的人试图在没有明确答案的情况下做到这一点,我需要得到一个有点跨设备的UUID,所以我不能依赖电话号码或Android的UUID(它可以被覆盖,我认为这取决于用户是否拥有Google帐户)。 http://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID

    在Linux中,您可以使用ifconfig或从/proc/net/arp中读取,并且可以很容易地获得硬件地址。

    安卓系统中有我可以阅读的文件吗?

    由于此地址显示在电话的“设置”>“关于电话”>“状态”中,因此必须有一种方法来获取此地址。

    4 回复  |  直到 7 年前
        1
  •  22
  •   CommonsWare    14 年前

    一定有办法得到这个 地址,因为它显示在 “设置”>“关于电话”>“状态” 电话。

    这意味着,如果没有其他的东西,你可以围绕Android开源代码,或者使用谷歌代码搜索,来找出它从何而来。

    我自己做了点小动作,好像是在用 getMacAddress() WifiInfo .

        2
  •  93
  •   Tobiaswk    14 年前

    回答晚了,但它可以帮助其他人解决同样的“问题”。

    这个 answer 非常直截了当:

    WifiManager wifiMan = (WifiManager) this.getSystemService(
                    Context.WIFI_SERVICE);
    WifiInfo wifiInf = wifiMan.getConnectionInfo();
    String macAddr = wifiInf.getMacAddress();
    

    以上代码将为您提供设备的MAC地址,记住在获取地址时启用WiFi。应该在活动中使用此代码段。

        3
  •  5
  •   Community Romance    7 年前

    更新:

    开始 安卓6 ,上面的API将为所有设备提供恒定的MAC地址,即 02:00:00:00:00:00 . 详情请参阅下文。
    http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html
    找到了另一个声称在6.0中找到MAC地址的帖子,但没有测试过。
    How to get Wi-Fi Mac address in Android Marshmallow

        4
  •  0
  •   Quantum4U    7 年前

    添加以下权限。

     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    

    WIFIManager在OnCreate中初始化。

     WifiManager wifiMgr = (WifiManager) getContext().getSystemService(context.WIFI_SERVICE);
    

    使用以下功能。

     public void WI-FI_MAC() {
        WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
        String macAddress = wifiInfo.getMacAddress();
        }