2011-05-19 73 views
22

我的Android应用程序可以找到它所连接的Wifi接入点的MAC地址吗?我可以在Android中找到我的接入点的MAC地址吗?

android.net.wifi.WifiInfo getMacAddress()的文档不提供任何细节。请参阅http://developer.android.com/reference/android/net/wifi/WifiInfo.html#getMacAddress()。 我假设这是我手机的Mac地址。我可以找到接入点的Mac地址吗?

+0

马克,你可以请张贴作为答案,我可以接受吗?您的目标是正确的,BSSID是基础架构模式下的AP Mac地址 - http://en.wikipedia.org/wiki/Service_set_(802.11_network)#Basic_service_set_identifier_.28BSSID.29。和Android公开android.net.wifi.WifiInfo getBSSID() – 2011-05-19 19:50:49

+0

谢谢迈克尔,很高兴听到它为你工作。 – 2011-05-20 23:26:27

回答

16

getBSSID() of WifiInfo class将返回远程接入点的MAC地址。

BSSID解释here

+0

谢谢。在Marc评论了我上面的问题之后,我才明白这一点。 – 2011-05-19 20:21:36

+1

不知道发生了什么,但是当试图从连接到同一个wifi路由器的两个不同设备获取BSSID时,我会收到两个不同的地址。有任何想法吗? – Urban 2015-04-02 22:55:03

+0

BSSID不是AP的MAC地址,而是ssid的MAC地址。详细解释请参阅https://arubanetworkskb.secure.force.com/pkb/articles/FAQ/How-is-the-BSSID-derived-from-the-Access-Point-ethernet-MAC-address – Anuruddha 2016-08-01 12:09:53

3

我确信getMacAddress(),就像你怀疑的本地设备一样。

如果您可以获得路由器/网关/接入点的IP,那么您可以使用本文中的代码:http://www.flattermann.net/2011/02/android-howto-find-the-hardware-mac-address-of-a-remote-host/来完成您的出价。祝你好运!

+1

我刚刚发布相同的链接。有趣的是,谷歌可以出现什么。 ;-) @迈克尔:android.net.DhcpInfo.gateway可能是你需要的AP的IP地址 – Squonk 2011-05-19 19:50:44

3

查看Android Market上的应用程序“Network Info II”。它确实显示了MAC地址,但我不确定这是否仍是手机的MAC。它还显示了BSSID,它具有与MAC地址相同的格式,因此您可能正在寻找。

11

以下方法将返回接入点的MAC地址,如果当前没有网络连接,则返回null。

public String getMacId() { 

    WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 
    return wifiInfo.getBSSID(); 
} 
相关问题