最近一直在尝试着在Android上通过ndk用C++获取本机MAC地址,但是用ioctl(SIOCGIFHWADDR)时,一直返回值小于0,即获取不到接口信息。刚开始我以为是自己漏掉了哪些访问权限,所以一直在增加uses-permission,后来发现不管怎么加都是这个情况,发现原来是用的android studio虚拟机没有打开wifi导致的。
因为WiFi的Mac address是一个被动资讯。一般在开机后,不会主动上报到系统裡。要待WiFi硬件启动后,才会把有关Mac address资料记载入系统去。所以要得到Mac address,一是等待WiFi启动,一是在程序中主动启动WiFi,得到Mac address后再把WiFi关掉。
(注:遍历了Android模拟器的接口之后,发现网卡名称只有eth0和lo(回环接口)两个,所以一般选择指定回去eth0)
时间: 2024-11-03 07:58:56