当前位置:首页 > 行业动态 > 正文

关于Android设备的唯一标识,有哪些获取方式及其可靠性如何?

Android 设备唯一标识有 Android ID、IMEI、MEID 等。

1、常见标识方法

IMEI(国际移动设备识别码)

获取方式:通过拨打#06#查询手机的IMEI码,或者在Android应用中,通过TelephonyManager的getDeviceId()方法获取。

优点:具有唯一性且恢复出厂设置不会改变。

缺点:获取IMEI需要READ_PHONE_STATE权限,而且在Android 10.0之后,第三方应用无法获取设备的IMEI,即使申请了READ_PHONE_STATE权限,不建议将IMEI作为设备标识。

设备序列号(SN号)

获取方式:在Android 7.1或更早系统中,可以通过android.os.Build.SERIAL获取设备序列号;在Android 8.0及以上版本中,需要调用Build.getSerial()方法,但需要申请READ_PHONE_STATE权限。

优点:由厂商提供,具有一定的唯一性。

缺点:在Android 8.0及以上版本中,android.os.Build.SERIAL总是返回"unknown",从Android 10.0及以上版本开始,获取设备序列号也被禁止。

关于Android设备的唯一标识,有哪些获取方式及其可靠性如何?

MAC地址

获取方式:通过WifiManager的getConnectionInfo().getMacAddress()方法获取已连接WiFi的MAC地址;或者通过NetworkInterface的getByName("wlan0").getHardwareAddress()方法获取WiFi模块的MAC地址。

优点:设备的物理地址,对于有WiFi模块的Android设备来说是一种有效的标识方式。

缺点:出于隐私考虑,官方不建议获取MAC地址,从Android 6.0开始,通过WifiManager获取的MAC地址将是固定的(02:00:00:00:00:00),而且在Android 7.0之后,读取/sys/class/net/wlan0/address也无法获取到MAC地址。

ANDROID_ID

获取方式:通过Settings.System.getString(getContentResolver(), Settings.System.ANDROID_ID)获取。

关于Android设备的唯一标识,有哪些获取方式及其可靠性如何?

优点:获取门槛最低,不需要任何权限,具有64位的取值范围,相对来说唯一性较好。

缺点:刷机、Root或恢复出厂设置等操作会导致ANDROID_ID改变,在Android 8.0及以上版本中,ANDROID_ID的规则发生了变化,对于升级到8.0之前安装的应用,ANDROID_ID会保持不变;对于安装在8.0系统的应用来说,ANDROID_ID根据应用签名、用户和设备三者的组合而不同,这两点可能会对广告联盟等产生影响,因此建议使用Advertising ID。

Advertising ID(AAID)

获取方式:依托于Google服务框架,如果手机内置该框架且能正常连接相关服务,则可以通过相应的API获取AAID。

优点:是非永久、可重置的标识符,专门用于广告行为,用户可以随时重置该类ID,或通过系统设置关闭个性化广告跟踪,更好地保护用户隐私。

缺点:如果手机没有内置Google服务框架、或框架不完整、或无法连接到相关服务,AAID可能不可用。

关于Android设备的唯一标识,有哪些获取方式及其可靠性如何?

2、单元表格归纳

标识方法 获取方式 优点 缺点
IMEI 拨打#06#或使用TelephonyManager的getDeviceId() 唯一性高,恢复出厂设置不变 Android 10.0后第三方应用无法获取
设备序列号(SN号) Android 7.1及更早:android.os.Build.SERIAL
Android 8.0及以上:Build.getSerial()(需权限)
由厂商提供,有一定唯一性 Android 8.0及以上版本获取受限
MAC地址 WifiManager或NetworkInterface相关方法 设备物理地址,有效标识(有WiFi模块时) 隐私考虑,Android 6.0及以后获取受限
ANDROID_ID Settings.System.getString(getContentResolver(), Settings.System.ANDROID_ID) 获取门槛低,无需权限,64位取值范围 刷机、Root或恢复出厂设置会改变;Android 8.0及以上规则变化
Advertising ID(AAID) 依托Google服务框架获取 非永久、可重置,保护隐私 依赖Google服务框架,部分设备可能不可用

3、相关问题与解答

问题一:为什么Android设备唯一标识的获取这么困难?

解答:这主要是由于隐私保护和安全方面的考虑,随着用户对隐私保护意识的增强,操作系统开发者限制了应用对设备唯一标识符的访问权限,以防止用户信息被滥用,不同的Android版本和设备厂商之间的差异也增加了获取唯一标识的难度。

问题二:在开发Android应用时,应该如何选择合适的设备唯一标识方法?

解答:在选择设备唯一标识方法时,开发者需要综合考虑应用的需求、目标用户群体以及隐私政策等因素,如果应用需要跨设备跟踪用户行为或实现个性化推荐等功能,可以选择ANDROID_ID或Advertising ID等相对可靠的标识方法,并确保遵守相关的隐私政策和法律法规。