我需要使用Java获取我的Android设备的MAC地址.我在网上搜索过,但是我找不到任何有用的东西.
我正在开发一个获取设备MAC地址的应用程序,但是因为Android 6.0我的代码不起作用,给我一个不正确的值.
这是我的代码......
public String ObtenMAC()
{
WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = manager.getConnectionInfo();
return(info.getMacAddress().toUpperCase());
}
Run Code Online (Sandbox Code Playgroud)
它返回一个奇怪的代码:"02:00:00:00:00:00",而不是真正的MAC地址.
有人可以帮我解决吗?
似乎android的java.net.NetworkInterface实现没有
byte [] getHardwareAddress()方法
http://developer.android.com/reference/java/net/NetworkInterface.html
我发现有几个人试图做这个没有确定答案的论坛,我需要得到一个有点跨设备的UUID,所以我不能依赖电话号码或ANDROID_ID(可以覆盖,我认为取决于对于拥有Google帐户的用户) http://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID
在linux中,您可以使用ifconfig或从/ proc/net/arp读取,您可以轻松获取硬件地址.
android中有一个我可以阅读的文件吗?
必须有一种获取此地址的方法,因为它显示在手机的"设置>关于手机>状态"中.
希望在Android M上获取Wifi MAC地址的Android开发人员可能遇到了以下问题:获取MAC地址的标准Android OS API返回虚假MAC地址(02:00:00:00:00:00)而不是真实MAC地址值.
获取Wifi MAC地址的常规方法如下:
final WifiManager wifiManager = (WifiManager) getApplication().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
final String wifiMACaddress = wifiManager.getConnectionInfo().getMacAddress();
Run Code Online (Sandbox Code Playgroud) 我需要将二进制字符串转换为十六进制字符串,但我有一个问题.我通过这种方法将二进制字符串转换为十六进制字符串:
public static String binaryToHex(String bin){
return Long.toHexString(Long.parseLong(bin,2));
}
Run Code Online (Sandbox Code Playgroud)
没关系!但我丢失了字符串左边的零.例如:
该方法返回此:123456789ABCDEF,但我想要返回此:
00000123456789ABCDEF
android ×4
java ×3
mac-address ×2
binary ×1
hex ×1
linux ×1
macos ×1
networking ×1
privacy ×1
wifi ×1