我需要一个对每个设备都是唯一的 ID。此 ID 将存储在服务器中,并将用于识别设备。我正在考虑使用 IMEI 号码,但出于隐私原因,我不想将 IMEI 号码发送到服务器。
所以,我正在考虑这样做
- 获取 IMEI 号码。
- 使用 SHA-1 散列 IMEI 号码。
- 将此发送到服务器
这是在没有隐私问题的情况下获得唯一设备 ID 的可靠方法吗?请指教。
使用以下方法获取 IMEI 号码
String identifier = null;
TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
if (tm != null)
identifier = tm.getDeviceId();
if (identifier == null || identifier .length() == 0)
identifier = Secure.getString(activity.getContentResolver(),Secure.ANDROID_ID);
并添加此权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
您可以使用 ANDROID_ID 但在某些设备中这是一个错误,并且似乎返回相同的 id。检查相同的参考https://groups.google.com/forum/#!topic/android-developers/U4mOUI-rRPY。作为后备,我执行以下操作:
String deviceId = Secure.getString(ActivationActivity.this.getContentResolver(), Secure.ANDROID_ID);
if ("9774d56d682e549c".equals(deviceId)) {
deviceId= UUID.randomUUID().toString();
}