Android 获取设备唯一识别码分析
Android 开发过程中,开发者迫于产品的淫威,需要实现一些特殊需要,比如获取 Android 设备号进去登录校验等等,但同时设备号对用户而言是不愿意暴露的。对于Android 中唯一区别设备信息的有哪些,怎么获得,特别整理一下。
IMEI
IMEI 唯一标识每台Android设备的序号
获取方式
<uses-permission Android:name="android.permission.READ_PHONE_STATE" />
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)
String imei = tm.getDeviceId()
IMEI 特点
1,在Android 6.0 对系统权限需要申请,READ_PHONE_STATE 被列为危险权限,如果冒然使用该权限只查询IMEI有点大材小用,用户也不一定授权,所以IMEI会不好获取。
2,TELEPHONY_SERVICE 对于平板、电视等Android系统设备不一定能获得。
3,系统bug可能获取不到IMEI信息
ANDROID_ID
设备首次启动系统会随机生成一个64位的数字,并把这个数字以16进制字符串的形式保存下来,如果手机出厂化,会重新生成一个设备号。
获取方式
Settings.System.getString(mContext.getContentResolver(), Settings.System.ANDROID_ID
ANDROID_ID 特点
1,相比 IMEI 而言获取的方式和途径相对而言比较容易
2,由于厂商之间各自的需求,Android_id 获取不一定正确,有可能和 IMEI 相同,也有可能会有重复的,不能有效区分唯一设备信息。
MAC 地址
MAC 使用手机 Wifi 或蓝牙的 MAC 地址作为设备标识
获取方式
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
String mac = wifi.getConnectionInfo().getMacAddress();
MAC 通过wifi或者蓝牙获取需要设备支持 wifi 和蓝牙,并且保证打开
UUID
UUID (Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,是由一个十六位的数字组成,表现出来的形式。
获取方式
UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法.
参考文献
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论