这是我使用的代码段
public static String getMACAddressOfDevice(Context context){
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String macAddress = wifiInfo.getMacAddress();
return macAddress;
}
有时它返回null。我不明白为什么! 有人可以解释一下吗?
答案 0 :(得分:1)
当 wifi 关闭时,某些Android设备返回null。
目前的设计。
如果设备没有wifi硬件,那么这种方法不起作用。
还有一些其他替代方案可用于设备的唯一识别
<强> IMEI:强>
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String m_deviceId = TelephonyMgr.getDeviceId();
缺点:
这是SIM卡依赖所以
如果没有SIM卡,我们就注定了
如果有双卡,那么我们就可以了。
蓝牙地址:
BluetoothAdapter m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String m_bluetoothAdd = m_BluetoothAdapter.getAddress();
缺点:
<强>串行:强>
我们可以读取硬件序列号。可以在设备设置中看到。
Build.SERIAL
缺点:
<强> Android_ID:强>
您可以尝试使用 ANDROID_ID 来识别设备,因为它不依赖于任何硬件 IMEI
String m_androidId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
缺点:
<强>建议:强>
最安全的选择是使用 Android_ID ,因为它不依赖于任何硬件的可用性