java获得android的imei号权限添加 TelephonyManager telephonyManager = (TelephonyManager) this getSystemService(ContextTELEPHONY_SERVICE); String IMEI = telephonyManagergetDeviceId(); adb命令获得:adb shell dumpsys iphonesubinfo有时候返回为空是因为,模块电源关闭了。重置后需要打开模块电源才能读出来查看机器的一些系统设置参数adb shell getprop
DEVICE_ID
这是Android系统为开发者提供的用于标识手机设备的串号,也是各种方法中普适性较高的,可以说几乎所有的设备都可以返回这个串号,并且唯一性良好。
这个DEVICE_ID可以同通过下面的方法获取:
TelephonyManager tm = (TelephonyManager)getSystemService(ContextTELEPHONY_SERVICE); String DEVICE_ID = tmgetDeviceId();
它会根据不同的手机设备返回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(ContextTELEPHONY_SERVICE); String SimSerialNumber = tmgetSimSerialNumber();
注意:对于CDMA设备,返回的是一个空值!
ANDROID_ID
在设备首次启动时,系统会随机生成一个64位的数字,并把这个数字以16进制字符串的形式保存下来,这个16进制的字符串就是ANDROID_ID,当设备被wipe后该值会被重置。可以通过下面的方法获取:
import androidproviderSettings; String ANDROID_ID = SettingsSystemgetString(getContentResolver(), SettingsSystemANDROID_ID);
ANDROID_ID可以作为设备标识,但需要注意:
厂商定制系统的Bug:不同的设备可能会产生相同的ANDROID_ID:9774d56d682e549c。
厂商定制系统的Bug:有些设备返回的值为null。
设备差异:对于CDMA设备,ANDROID_ID和TelephonyManagergetDeviceId() 返回相同的值。
Serial Number
Android系统23版本以上可以通过下面的方法得到Serial Number,且非手机设备也可以通过该接口获取。
String SerialNumber = androidosBuildSERIAL;
UICC初始化失败。是其中之一。第二权限问题。UICC初始化属于底层的一些东西,一本书不一定说的明白,大致就是这样一个过程,你调用一些封装好的API调用通信框架的函数,调用RIL *** 作调制解调器。如果这中间任何一个环节不通畅,都会导致获取不到结果。一个手机开机,都必须初始化调制解调器和UICC。所以我说初始化失败也是原因之一。
1
打开手机
2
通常情况下,在拨号界面输入 #06# (不同厂商的手机所需输入的内容不同,同一厂商不同手机所需输入的内容也可能不同,详细请查询对应手机型号)
3
即可回显出当前手机设备的IMEI
4
如果手机上无法找到,一般可以在手机的外包装上找到
5
将获取的IMEI到 电信设备进网管理页面 可以查询核实。
TelephonyManager tel = (TelephonyManager) paramContextgetSystemService(ContextTELEPHONY_SERVICE);CellLocation cellLocation = telgetCellLocation(); int nPhoneType = telgetPhoneType(); if (nPhoneType == 1 && cellLocation instanceof GsmCellLocation) { thisisGsm = true; GsmCellLocation gsmCellLocation = (GsmCellLocation) cellLocation; int nGSMCID = gsmCellLocationgetCid(); if (nGSMCID > 0) { if (nGSMCID != 65535) { thiscid = nGSMCID; thislac = gsmCellLocationgetLac(); } } }
以上就是关于如何获取android设备的imei号全部的内容,包括:如何获取android设备的imei号、如何获取android设备唯一识别码、android手机导致获取不到mac地址,imei,imsi的因素有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)