前一段时间我一直在寻找一种方法来唯一地识别我的应用程序运行的设备。我找到了以下算法:
final TelephonyManager tm = (TelephonyManager) baseContext.getSystemService(Context.TELEPHONY_SERVICE);
final String tmDevice = "" + tm.getDeviceId();
final String tmSerial = "" + tm.getSimSerialNumber();
final String androidId = "" + android.provider.Settings.Secure.getString(baseContext.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
return deviceUuid.toString();
有人可以向我解释为什么偶尔会在同一台设备上给我不同的结果,以及我可以做些什么来纠正它?
答案 0 :(得分:0)
我预计问题与getSimSerialNumber()有关,因为它获取了一个特定SIM卡的序列号,因此如果手机的所有者更改SIM(例如通过移动网络),该方法将返回不同的ID。 SIM是唯一的,但每个设备可能在不同的时间使用不同的SIM。
答案 1 :(得分:0)
Advantej和Ollie C都发布了这个问题的答案。请看下面的页面:
http://android-developers.blogspot.com/2011/03/identifying-app-installations.html