首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android中使用python获取mac地址

问如何在android中使用python获取mac地址
EN

Stack Overflow用户
提问于 2013-02-01 06:33:19
回答 3查看 1.9K关注 0票数 2

我正在尝试在Android的XBMC linux环境中编写一个插件。我可以在XBMC中看到Mac地址。但是我想要获取这个插件的mac地址,但是我不知道怎么做。

代码语言:javascript
复制
mac=uuid.getnode()

我已经尝试过类似上面的代码,但在android中运行时只给了我不同的数字。

有人能给点建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-04 01:33:59

您可以使用XBMC InfoLabels

代码语言:javascript
复制
if xbmc.getInfoLabel('Network.MacAddress') != None:
    mac_address = xbmc.getInfoLabel('Network.MacAddress')
else:
    mac_address = None
票数 3
EN

Stack Overflow用户

发布于 2013-02-01 08:10:56

如果你看看the docs

获取48位正整数形式的硬件地址。第一次运行时,它可能会启动一个单独的程序,这可能会相当慢。如果所有获取硬件地址的尝试都失败,我们将按照RFC 4122中的建议,选择一个随机的48位数,并将其第八位设置为1。

第一部分解释了为什么它是“只有数字”。这应该是一个数字。如果你想以某种特殊的十六进制字符串格式,只需格式化它-例如,通过调用hex()。

最后一句话解释了为什么“每次都不一样”。如果您查看the source,在任何非Windows平台上,getnode将尝试_unixdll_getnode,然后是_ifconfig_getnode,然后回退到一个随机数。前者需要在libuuid或libc中使用一个名为uuid_generate_time的函数,而安卓上不存在该函数。后者使用一系列不同的标志运行命令ifconfig并搜索特定字符串,然后返回到arp和lanscan。同样,所有这些在Android上都不起作用。

在Android上没有推荐的获取MAC地址的方法,主要是因为他们不想让你获取。This blog post解释了原因,this SO question (特别是Seka Alekseyev的答案)补充了更多细节。一些应用程序一旦获得MAC地址,就会尝试保留它,并且永远不会再次检查,这解决了一些问题,但不是大多数问题。

有一个Java API可以为每个有意义的服务获取MAC -WiFi、3G、蓝牙等。你可以自己决定哪一个是“那个”MAC,你需要正确的权限(例如,android.permission.ACCESS_WIFI_STATE),可能没有值或无用的值,但你可以用下面的代码获得它:

代码语言:javascript
复制
WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String mac = wm.getConnectionInfo().getMacAddress();

据我所知,在SL4A或任何其他Android Python发行版中都没有直接公开这些函数的内容,因此您必须编写自己的包装器。

票数 3
EN

Stack Overflow用户

发布于 2013-05-22 12:56:17

你可以通过这种简单的方式获取mac地址,假设"eth0“是你的网络设备名:

o= open('/sys/class/net/eth0/address','r')

mac_address = o.read().strip() #on“ff:ff”表单

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14636382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档