Android能够获取到唯一的设备ID吗?
2013-10-21 10:49
405 查看
Android是否有唯一的设备ID,如果有的话,该怎样快速有效获取?
Settings.Secure#ANDROID_ID 返回Android
ID ,是一个64位的16进制字符串
关于这个问题有很多的答案,不过其中大部分将只能算是答对了一部分,还不够好。
根据我在很多设备上的测试(所有的电话,至少有一个是无效的)
所有设备针对 TelephonyManager.getDeviceId() 测试都有返回值
所有GSM设备(都有SIM卡)针对 TelephonyManager.getSimSerialNumber() 测试都有返回值
所有CDMA设备针对 getSimSerialNumber() 测试返回 NULL(预期中的)
所有有谷歌帐户的设备都返回了 ANDROID_ID 值
所有的CDMA设备针对 ANDROID_ID 和 TelephonyManager.getDeviceId() 都返回相同的值(或派生自同一个值) - 前提是安装过程中已经添加了谷歌帐户。
我还没有机会测试没有SIM卡的GSM设备,没有谷歌账户的GSM设备,以及任何在飞行模式下的设备。
所以,如果你想要得到设备本身的唯一值, TM.getDeviceId()应该是足够了。不过显然的,有些用户比其他人更加偏执一些,可以将这些标识中的一个或者多个进行hash运算就很有用,生成的字符串仍然可以唯一标识该设备,但是不会明确的标识实际的设备。例如,使用String.hashCode(),再加上一个UUID:
结果可能类似 :00000000-54b3-e7c7-0000-000046bffd97
对我来说这种方式已经足够了
别忘了增加权限,用于读取 TelephonyManager properties,在manifest 中增加下面一行:
Settings.Secure#ANDROID_ID 返回Android
ID ,是一个64位的16进制字符串
根据我在很多设备上的测试(所有的电话,至少有一个是无效的)
所有设备针对 TelephonyManager.getDeviceId() 测试都有返回值
所有GSM设备(都有SIM卡)针对 TelephonyManager.getSimSerialNumber() 测试都有返回值
所有CDMA设备针对 getSimSerialNumber() 测试返回 NULL(预期中的)
所有有谷歌帐户的设备都返回了 ANDROID_ID 值
所有的CDMA设备针对 ANDROID_ID 和 TelephonyManager.getDeviceId() 都返回相同的值(或派生自同一个值) - 前提是安装过程中已经添加了谷歌帐户。
我还没有机会测试没有SIM卡的GSM设备,没有谷歌账户的GSM设备,以及任何在飞行模式下的设备。
所以,如果你想要得到设备本身的唯一值, TM.getDeviceId()应该是足够了。不过显然的,有些用户比其他人更加偏执一些,可以将这些标识中的一个或者多个进行hash运算就很有用,生成的字符串仍然可以唯一标识该设备,但是不会明确的标识实际的设备。例如,使用String.hashCode(),再加上一个UUID:
结果可能类似 :00000000-54b3-e7c7-0000-000046bffd97
对我来说这种方式已经足够了
别忘了增加权限,用于读取 TelephonyManager properties,在manifest 中增加下面一行:
相关文章推荐
- Android能够获取到唯一的设备ID吗?
- Android 能够获取到唯一的设备 ID 吗?
- Android设备唯一标识ID的获取
- 如何获取Android移动终端设备唯一ID
- Android获取设备唯一ID的几种方式
- Android下获取设备唯一标识(UDID, DeviceID...)
- Android下获取设备唯一标识(UDID, DeviceID...)
- 详解Android获取设备唯一ID的几种方式
- android唯一设备标识、设备号、设备ID的获取方法
- 安卓获取渠道名渠道id Android获取设备唯一标识的终极解决方法,防止安卓7.0时崩溃问题
- android系统获取系统相关信息(如Android设备的唯一ID等)(源码)
- android开发中获取的设备id(每部手机的唯一标识)
- android系统获取系统相关信息(如Android设备的唯一ID等)原理
- Android获取设备唯一ID的方法
- Android 获取设备唯一ID
- 关于获取设备的唯一设备ID,MAC地址 IOS/Android问题
- Android获取设备唯一ID
- Android多种方法获取唯一设备id
- Android下获取设备唯一标识(UDID, DeviceID)
- 获取Android设备的唯一 Android ID