艾米
IMEI是电话模块的“MAC” - 电话在通过GSM / GPRS / HSPDA / 等连接时使用的唯一ID。GSM网络使用它通过GSM网络将电话的呼叫和数据路由到网关到Internet(这是一个IP网络)。
电话模块是处理电话网络(GSM或CMDA)的芯片或电路板,通常具有用于可移动SIM卡的插槽。某些手机具有多个电话模块(活动的双 SIM 卡或多 SIM 卡电话)。每个电话模块都有自己的 IMEI。
制造商在制造过程中为每部手机(严格的电话模块)提供唯一的IMEI。但是,如果您有正确的软件,通常可以重写该数字。这通常是在手机被盗后完成的,以便为手机提供新的身份和双通被盗电话拦截系统。
IMEI 可以使用 TelephonyManager.getDeviceId() API 以编程方式获取。
CDMA手机具有ESN或MEID,它们具有不同的长度和格式,即使它使用相同的API进行检索。
没有电话模块的Android设备-例如许多平板电脑和电视设备-没有IMEI。正如Schlangi所评论的那样,一些没有电话模块的设备伪造了IMEI,因此IMEI的存在并不能(始终)保证设备具有电话模块。
ANDROID_ID
ANDROID_ID是手机上的另一个唯一数字 - 这是操作系统首次启动时自动生成的(这样做会使制造商更容易从生产线上删除一个步骤)。
ANDROID_ID可以(并且确实)改变,例如:
它主要由开发人员使用(例如,识别和连接到设备使用adb
)
ANDROID_ID可用于识别上述警告的Android设备,实际上意味着它在设备生命周期的重要部分内唯一标识设备,但不能依赖。
另请注意,Froyo中存在一个错误,其中许多设备都为自己提供了相同的ANDROID_ID。这是错误
其他标识符
还有许多其他东西可以用来识别设备:
其他注意事项
您需要特定的权限才能访问每个 API,因此,如果您尝试使用所有这些 API,则您的应用在 Google Play 商店中的权限看起来相当宽松。
我认为这个链接解释了所有其他可用的选项,也 https://android-developers.googleblog.com/2011/03/identifying-app-installations.html