Android设备的唯一标识


转载请说明出处!
作者:kqw攻城狮
出处:个人站 | CSDN


Android设备的唯一标识

IMEI

权限

1
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

获取IMEI

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* 获取IMEI
*
* @return IMEI
*/
private String getIMEI() {
try {
TelephonyManager TelephonyMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
return TelephonyMgr.getDeviceId();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

WLAN MAC Address

权限

1
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

获取MAC地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* 获取WLAN MAC Address
*
* @return MAC地址
*/
private String getWLANMacAddress() {
try {
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
return wifiInfo.getMacAddress();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

BT MAC Address

权限

1
<uses-permission android:name="android.permission.BLUETOOTH" />

获取MAC地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* 获取BT MAC Address
*
* @return MAC地址
*/
private String getBTMacAddress() {
try {
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
return bluetoothAdapter.getAddress();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

MD5加密

附加一个MD5的加密算法,考虑在某些特殊设备上可能获取不到某个ID,可以获取多个ID,组合起来,通过MD5算法,得到一个32位的唯一标识

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
* MD5加密
*
* @param text 要加密的字符串
* @return 加密后的32位结果
*/
private String digest(String text) {
try {
// 创建一个MD5加密算法
MessageDigest digest = MessageDigest.getInstance("MD5");
// 创建StringBuffer保存十六进制数据
StringBuffer sb = new StringBuffer();
// 换成字节数组
byte[] bytes = digest.digest(text.getBytes());
// 遍历字节数组加密
for (byte bt : bytes) {
// 将负数转换为正数
int i = bt & 0xff;
// 将十进制转换为十六进制
String hex = Integer.toHexString(i);
// 如果不够2位,前面补0
if (2 > hex.length()) {
sb.append(0);
}
sb.append(hex);
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}

例:

1
2
3
String text = getWLANMacAddress() + getBTMacAddress() + getIMEI();
String md5 = digest(text);
Toast.makeText(this, "MD5:" + md5, Toast.LENGTH_SHORT).show();
坚持原创技术分享,您的支持将鼓励我继续创作!