前一段時間,我一直在尋找一種方法來唯一標識我的應用程序正在運行的設備。我發現下面的算法:電話唯一標識符差異
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();
誰能給我解釋一下爲什麼會偶爾給我在同一設備上不同的結果,而我能做些什麼來糾正呢?
請記住,許多Android設備沒有SIM卡!例如谷歌電視,很多平板電腦,媒體播放器等 – 2011-04-04 18:22:18
這很好。這部分最終會變成空的。我問的是爲什麼同樣的設備會突然產生不同的結果。 – Andrew 2011-04-04 18:33:30
可能這不是對這個問題的回答,但谷歌最近發佈了具有唯一標識符的準則,而不是使用getDeviceId方法。你可以在這裏看看它:http://android-developers.blogspot.com/2011/03/identifying-app-installations.html – advantej 2011-04-04 19:01:31