我试图在我的Android设备中获取蓝牙的MAC地址.所以我使用以下方法:
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String macAddress = mBluetoothAdapter.getAddress();
返回的地址是02:00:00:00:00:00
。我看到一些问题和帖子说,除非你的应用程序是一个系统应用程序,否则在android中无法获取你的MAC地址。
那么,如果我真的需要得到我的手机的MAC地址呢??这是不可能做到的还是什么?
**注:**我知道这个问题在SO上被问了很多次,但大多数答案都过时了。
3条答案
按热度按时间l7wslrjt1#
出于安全原因,自Android版本6.0起,此功能在Android上不可用[来源]:-
为了向用户提供更好的数据保护,从本版本开始,Android将删除使用Wi-Fi和蓝牙API的应用程序对设备本地硬件标识符的编程访问。getMacAddress()和BluetoothAdapter.getAddress()方法现在返回常量值02:00:00:00:00:00。
这样做的原因是为了阻止随机应用程序获取有关手机硬件地址的信息,从而违反隐私/数据保护。
希望这能帮上忙。
uqjltbpv2#
Youssif Saeed在另一个答案中说的是正确的。Android不再允许我们获取MAC地址。
简要描述我想要的:
假设我有一部MAC地址为X的手机,附近还有一台MAC地址为B的设备。当两个设备彼此靠近时。我能够使用BluetoothDevice和来自ScanResult.getDevice()的getAddress()方法获得其他设备的MAC地址。所以我仍然需要的是捕获我自己的设备MAC地址,以便在后端我用他的MAC地址保存每个用户,当我在蓝牙中捕获它时,我知道谁在我附近
以下是我为了在附近的设备之间发送一些数据所做的变通方法。
我发现了一个叫Nearby Messages API的东西。它适用于Android和iOS,并且非常容易实现。现在,我可以捕获附近安装了我的应用程序的设备,并发送应用程序生成的唯一ID来识别用户。
rsl1atfo3#
我在我的设备上找到了蓝牙和WiFi Mac的解决方案。某些属性未隐藏。如果在应用程序中的无根shell上运行getprop,您可能会发现这些属性是只读的:
persist.odm.wifimac:[xx:xx:xx:xx:xx:xx]
persist.odm.bt.address:[xx:xx:xx:xx:xx:xx]
对于我的应用程序,我运行此命令以获取蓝牙mac,然后从datainputstream中读取内容以获取mac地址。
getprop persistent.odm.bt.address