设备ID提供空值

时间:2014-02-20 14:03:29

标签: android

我正在尝试使用以下代码

获取唯一ID [I.E unique id of a device]
TelephonyManager tManager;

tManager = (TelephonyManager).getSystemService(Context.TELEPHONY_SERVICE);

String deviceId = tManager.getDeviceId();

deviceId为我提供Android设备的唯一ID。我没有在模拟器上测试它,因为在模拟器中我得到了值000000000000000

我在实际设备上测试它的任何方式,这适用于大多数设备,但在某些设备中我获得了价值null

我在

上测试了这个
Samsung Galaxy S3

Samsung Galaxy Tab3

Samsung Galaxy Star

Google Nexus4

Google Nexus5

Google Nexus7

在上面列出的所有设备中,它为我提供了正确的输出,除了一个设备Google Nexus7,在此我得到的值null

所以,最终我的目标是为每个特定设备获取唯一值,如果此代码给我空值而不是我可以尝试其他方式

我听说Device MAC Address对所有设备都是唯一的,但遗憾的是它只适用于wifi连接。

有没有其他方法可以获得每个特定设备的独特价值?

非常感谢

1 个答案:

答案 0 :(得分:13)

你不应该真正使用ANDROID_ID,你没有真正保证它会为你提供设备的唯一标识符,并且已知某些旧设备会给出值null,或者在Moto的情况下,跨多个设备的相同静态值。当手机重置为出厂默认设置时,此值也会更改,并且在根设备上更容易更改。

正确的方法是通过。

生成自己的UUID
String uudid = UUID.randomUUID()

然后将其保存在您的应用中,例如通过SharedPreference。然后,即使用户卸载了您的应用,您也可以使用Google的Android备份存储来保留此标识符。

有关此处备份的详细信息:http://developer.android.com/guide/topics/data/backup.html

如果你不接受我的话,你应该接受Reto Meier的话,他是谷歌Android团队的开发者倡导者。这段视频将解释我刚刚告诉你的内容,在第15分钟左右检查,他还特别指示开发人员不要使用ANDROID_ID

http://www.youtube.com/watch?v=twmuBbC_oB8&list=WL86437554BC3E54B5