导航:首页 > 编程语言 > 编程实现识别码

编程实现识别码

发布时间:2023-09-05 07:34:35

‘壹’ 如何获取android设备唯一识别码

DEVICE_ID
这是Android系统为开发者提供的用于标识手机设备的串号,也是各种方法中普适性较高的,可以说几乎所有的设备都可以返回这个串号,并且唯一性良好。
这个DEVICE_ID可以同通过下面的方法获取:
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String DEVICE_ID = tm.getDeviceId();

它会根据不同的手机设备返回IMEI,MEID或者ESN码,但在使用的过程中有以下问题:
非手机设备:最开始搭载Android系统都手机设备,而现在也出现了非手机设备:如平板电脑、电子书、电视、音乐播放器等。这些设备没有通话的硬件功能,系统中也就没有TELEPHONY_SERVICE,自然也就无法通过上面的方法获得DEVICE_ID。
权限问题:获取DEVICE_ID需要READ_PHONE_STATE权限,如果只是为了获取DEVICE_ID而没有用到其他的通话功能,申请这个权限一来大才小用,二来部分用户会怀疑软件的安全性。
厂商定制系统中的Bug:少数手机设备上,由于该实现有漏洞,会返回垃圾,如:zeros或者asterisks
MAC ADDRESS
可以使用手机Wifi或蓝牙的MAC地址作为设备标识,但是并不推荐这么做,原因有以下两点:
硬件限制:并不是所有的设备都有Wifi和蓝牙硬件,硬件不存在自然也就得不到这一信息。
获取的限制:如果Wifi没有打开过,是无法获取其Mac地址的;而蓝牙是只有在打开的时候才能获取到其Mac地址。
获取Wifi Mac地址:
获取蓝牙 Mac地址:
Sim Serial Number
装有SIM卡的设备,可以通过下面的方法获取到Sim Serial Number:
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String SimSerialNumber = tm.getSimSerialNumber();

注意:对于CDMA设备,返回的是一个空值!
ANDROID_ID
在设备首次启动时,系统会随机生成一个64位的数字,并把这个数字以16进制字符串的形式保存下来,这个16进制的字符串就是ANDROID_ID,当设备被wipe后该值会被重置。可以通过下面的方法获取:
import android.provider.Settings; String ANDROID_ID = Settings.System.getString(getContentResolver(), Settings.System.ANDROID_ID);

ANDROID_ID可以作为设备标识,但需要注意:
厂商定制系统的Bug:不同的设备可能会产生相同的ANDROID_ID:9774d56d682e549c。
厂商定制系统的Bug:有些设备返回的值为null。
设备差异:对于CDMA设备,ANDROID_ID和TelephonyManager.getDeviceId() 返回相同的值。
Serial Number
Android系统2.3版本以上可以通过下面的方法得到Serial Number,且非手机设备也可以通过该接口获取。
String SerialNumber = android.os.Build.SERIAL;

阅读全文

与编程实现识别码相关的资料

热点内容
c语言javaphp 浏览:804
程序员技术不分高低吗 浏览:619
dos不是内部或外部命令 浏览:708
PC机与单片机通讯 浏览:674
二级加密图 浏览:113
压缩机异音影响制冷吗 浏览:711
德斯兰压缩机 浏览:490
程序员太极拳视频 浏览:531
网上购买加密锁 浏览:825
安卓为什么软件要隐私 浏览:83
虚拟主机管理源码 浏览:811
java图形图像 浏览:230
单片机输出口电平 浏览:486
java配置数据库连接 浏览:479
java多态的体现 浏览:554
java的split分隔符 浏览:128
跪着敲代码的程序员 浏览:238
web和php有什么区别 浏览:120
加密的电梯卡怎么复制苹果手机 浏览:218
warez压缩 浏览:137