Android上系统ID有很多,本文只介绍常用的ANDROID ID、DEVICE ID、IMEI/MEID、WIFI/BT ADDRESS等几个,本文介绍这些ID的数据格式、长度及一些基本知识。
一、DEVICE_ID
DEVICE_ID是设备ID标识,用于唯一标识设备,这个ID似乎并非是独立的一串数字,而会由于终端的硬件配置不同,所取到的结果不同。
比如GSM手机DEVICE_ID可能是IMEI号,CDMA手机可能是MEID,不带MODEM的手机可能会返回NULL,也可能返回其它唯一值,比如MAC地址等。
二、MAC ADDRESS
MAC ADDRESS有两种:Wifi和BT,在设备出厂时分别独立设置。MAC地址共48位(6个字节),十六进制表示。前24位由IEEE决定如何分配,后24位由实际生产该网络设备的厂商自行指定。
MAC地址存储位置(WIFI): /sys/class/net/wlan0/address
三、ANDROID_ID
ANDROID_ID是Android系统第一次启动时产生的一个64bit(16BYTES)数,如果设备被wipe还原后,该ID将被重置(变化)。
四、CPU ID
CPU ID一般存储在/proc/cpuinfo中,该文件包含核心版本、型号、频率等信息。
更多关于系统信息可到/proc下查找,比如/proc/version、/proc/meminfo、/proc/version等。
五、IMEI/MEID和IMSI
IMEI/MEID都是面向具备手机功能的设备才有的设备识别号码。IMSI也叫订阅号Subscriber ID。IMSI和IMEI/MEID联合登录网络,由GSM/3G网络负责映射为我们的手机号。相关获取及管理工作可参考Android TelephonyManager部分。
此外,还有Google Service Framework(GSF ID KEY)、等ID标识,一般都是专用途,并不建议开发者随意去获取这些ID信息。
另,Google Play上有一些小软件可以查看此类信息,当然这些信息大部分都是涉及到用户隐私问题,如果说大量的Android市场程序(包括Windows Phone大部分应用也有此恶行)收集DEVICE_ID作为应用推广统计的话还还情有可原,那么大量要求访问通讯录、短信等权限要求基本都属于鄙劣行为,这严重侵害用户的利益,当然这也是当前网站把消费者向手机终端引导的一个主要目的。因为他们可以无限制的使用通话、通信录和短信功能,而在电脑上商家却没有任何办法。
天缘认为,此类涉及到用户订阅、发短信、拨打电话等行为,都应该建议用户手动去操作才对,而不是程序代为执行此类操作,大部分恶意软件很是忠于此行。
参考资料:
http://blog.csdn.net/billpig/article/details/6728573
http://zh.wikipedia.org/zh-cn/MAC%E5%9C%B0%E5%9D%80
http://stackoverflow.com/questions/2785485/is-there-a-unique-android-device-id
http://blog.csdn.net/guang_toad/article/details/10134939
http://blog.codepainters.com/2010/09/06/android-emulator-and-the-sim-card-serial-number/
http://www.metsky.com/archives/668.html