设备ID为空值
设备ID为空值
这个问题已经有了答案:
我试图用以下代码获取唯一ID[即设备的唯一ID]
:
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
,其他所有设备都给我正确的输出
因此,我的最终目标是获取每个特定设备的唯一值,如果这段代码给我 null 值,则可以尝试其他替代方式
我听说 设备MAC地址
是所有设备的唯一标识,但不幸的是,它仅适用于 WiFi 连接。
还有其他方法可以获取每个特定设备的唯一值吗?
无论如何,谢谢!
您不应该真的使用ANDROID_ID,因为您无法确保它会为设备提供唯一的标识符,而且已知某些旧设备会给出值null
,或者像Moto的情况一样,在多个设备上给出相同的静态值。当手机被重置为出厂默认设置时,此值也会更改,并且在已root设备上更改此值非常容易。
正确的方法是通过生成您自己的UUID。
String uudid = UUID.randomUUID()
然后,在您的应用程序中保存此值,例如通过SharedPreference
。然后,即使用户卸载您的应用程序,您也可以使用Google的Android备份存储保留此标识符。
备份的更多信息在此处:http://developer.android.com/guide/topics/data/backup.html
如果您不相信我,您应该相信Reto Meier,他是Google Android团队的开发者倡导者。这个视频将解释我刚才告诉你的内容,请查看大约在第15分钟左右的部分,他还特别指示开发人员不要使用ANDROID_ID
。
http://www.youtube.com/watch?v=twmuBbC_oB8&list=WL86437554BC3E54B5