1. 如何获取android设备的imei号
获取android设备的imei号可以打开拨号盘,输入*#06#即可查看IMEI号。
国际移动设备识别码(IMEI:International Mobile Equipment Identification Number)是区别移动设备的标志,储存在移动设备中,可用于监控被窃或无效的移动设备。IMEI可用移动终端设备通过键入"*#06#"查得(不同厂商的手机所需输入的内容不同,同一厂商不同手机所需输入的内容也可能不同)。其总长为15位,每位数字仅使用0~9的数字(含义见下文)。
IMEI俗称"串号",存储在手机的EEPROM(俗称"码片")里,熟悉并了解这个号码对我们今后识别手机会起到非常大的作用。
2. android imei获取
随着android系统不断升级,android设备的imei号已经越来越难获取了。网上一些推荐会用meid、androidid来代替imei号。但是因为项目推广需要比对渠道那边回传imei号来确认新增。
发现部分机型渠道(eg:快手)可以获取到而我们获取不到,导致无法确认新增。最终在TelephonyManager中找到getDeviceSoftwareVersion()方法。可以变相实现获取imei号(但也会有getDeviceSoftwareVersion获取不到的机型,不过验证渠道那边也获取不到了)。
public static String getIMEI() {
TelephonyManager telephonyManager = (TelephonyManager) BaseApplication.getAppContext().getSystemService(Context.TELEPHONY_SERVICE);
String imei = null;
if (AndPermission.hasPermissions(BaseApplication.getAppContext(), Manifest.permission.READ_PHONE_STATE)) {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
imei = telephonyManager.getImei();
if (!TextUtils.isEmpty(imei)) {
return imei;
} else {
String softwareVersion = getDeviceSoftwareVersion();
if (!TextUtils.isEmpty(softwareVersion) && softwareVersion.length() > 14) {
String imeiHead = softwareVersion.substring(0, 14);
imei = imeiHead + luhn(imeiHead);
return imei;
} else {
return null;
}
}
} else {
return telephonyManager.getDeviceId();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return imei;
}
/**
* Luhn算法
* 根据号码获取校验位
*
* @param cardNumber
* @return
*/
public static int luhn(String cardNumber) {
int totalNumber = 0;
for (int i = cardNumber.length() - 1; i >= 0; i -= 2) {
int tmpNumber = calculate(Integer.parseInt(String.valueOf(cardNumber.charAt(i))) * 2);
if (i == 0) {
totalNumber += tmpNumber;
} else {
totalNumber += tmpNumber + Integer.parseInt(String.valueOf(cardNumber.charAt(i - 1)));
}
其实是因为getDeviceSoftwareVersion和getImei()拼接规则只有末位两个数不相同,而imei的末位数可以通过luhn算法获取,从而拼接成imei值(自测有效)。
但是毕竟还是有部分机型获取不到imei,可以使用oaid来补充说明。
如果是自己app内部做唯一标识的话可以用meid、androidid或deviceid来代替imei
public static String getUniqueId() {
TelephonyManager telephonyManager = (TelephonyManager) BaseApplication.getAppContext().getSystemService(Context.TELEPHONY_SERVICE);
if (AndPermission.hasPermissions(BaseApplication.getAppContext(), Manifest.permission.READ_PHONE_STATE)) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
3. 双卡双待的安卓手机,有两个imei,app获取的是哪个还是设备标识是唯一的
哪个APP获取?两个都是可以获取到的,很多手机关于本机里面IMEI只会显示第一个,新机防伪认证贴的条码上应该会列出所有IMEI
4. android怎么获得双卡imsi和imei
getSimSerialNumber()是获取IMEI的
getSubscriberId()才是获取IMSI的
MTK的是getSubscriberIdGemini(int simId)
对应的getSimSerialNumberGemini(int simId)
高通平台有单独的类MSimTelephonyManager里面有方法
getSubscriberId(int simId)
getSimSerialNumber(int simId)
高通平台接口不太确定各个厂商是否都是这样.据说之前高通双卡方案代码是外包的,可能不太一样.
simId 0应该是主卡 1是次卡
要用反射掉,不是原生接口
5. 安卓手机怎么查看IMEI号
IMEI码是移动设备国际身份码的缩写,由15位数字组成。每部正规的手机至少会有一个IMEI码(双卡手机有两个IMEI码),SN码和IMEI码可以注册论坛VIP、查询手机真伪等。
温馨提示:IMEI码不可以修改或注销。
vivo手机IMEI码查询方法:
1、打开拨号盘,在拨号界面输入 *#06# 即可;
2、①Funtouch OS 9.2/iQOO Monster UI及以上:进入手机设置--我的设备--更多参数中,可查询到;
②Funtouch OS 9.2以下:进入设置--更多设置--关于手机中查询;
3、手机包装盒上会有一张标注手机信息的的贴纸,在上面查看到IMEI码;
4、手机包装盒中的“重要信息与保修卡”册子,贴有手机的IMEI码。
6. android怎么获取手机imei号
您可以通过手机设置的关于本机选项下查看手机IMEI码。
也可以通过拨号键盘输入*#06#获得。