android imei获取

android imei获取,第1张

随着android系统不断升级,android设备的imei号已经越来越难获取了。网上一些推荐会用meid、androidid来代替imei号。但是因为项目推广需要比对渠道那边回传imei号来确认新增。

发现部分机型渠道(eg:快手)可以获取到而我们获取不到,导致无法确认新增。最终在TelephonyManager中找到getDeviceSoftwareVersion()方法。可以变相实现获取imei号(但也会有getDeviceSoftwareVersion获取不到的机型,不过验证渠道那边也获取不到了)。

public static String getIMEI() {

TelephonyManager telephonyManager = (TelephonyManager) BaseApplicationgetAppContext()getSystemService(ContextTELEPHONY_SERVICE);

String imei = null;

if (AndPermissionhasPermissions(BaseApplicationgetAppContext(), ManifestpermissionREAD_PHONE_STATE)) {

try {

if (BuildVERSIONSDK_INT >= BuildVERSION_CODESO) {

imei = telephonyManagergetImei();

if (!TextUtilsisEmpty(imei)) {

return imei;

} else {

String softwareVersion = getDeviceSoftwareVersion();

if (!TextUtilsisEmpty(softwareVersion) && softwareVersionlength() > 14) {

String imeiHead = softwareVersionsubstring(0, 14);

imei = imeiHead + luhn(imeiHead);

return imei;

} else {

return null;

}

}

} else {

return telephonyManagergetDeviceId();

}

} catch (Exception e) {

eprintStackTrace();

}

}

return imei;

}

/

Luhn算法

根据号码获取校验位

@param cardNumber

@return

/

public static int luhn(String cardNumber) {

int totalNumber = 0;

for (int i = cardNumberlength() - 1; i >= 0; i -= 2) {

int tmpNumber = calculate(IntegerparseInt(StringvalueOf(cardNumbercharAt(i))) 2);

if (i == 0) {

totalNumber += tmpNumber;

} else {

totalNumber += tmpNumber + IntegerparseInt(StringvalueOf(cardNumbercharAt(i - 1)));

}

其实是因为getDeviceSoftwareVersion和getImei()拼接规则只有末位两个数不相同,而imei的末位数可以通过luhn算法获取,从而拼接成imei值(自测有效)。

但是毕竟还是有部分机型获取不到imei,可以使用oaid来补充说明。

如果是自己app内部做唯一标识的话可以用meid、androidid或deviceid来代替imei

public static String getUniqueId() {

TelephonyManager telephonyManager = (TelephonyManager) BaseApplicationgetAppContext()getSystemService(ContextTELEPHONY_SERVICE);

if (AndPermissionhasPermissions(BaseApplicationgetAppContext(), ManifestpermissionREAD_PHONE_STATE)) {

if (androidosBuildVERSIONSDK_INT >= BuildVERSION_CODESP) {

担心手机的真伪可以参考vivo手机的以下方式验证:

1、打开验证真伪网址:>

要使用IMEI码定位手表位置,首先需要获取IMEI码,然后在任何设备上搜索IMEI码,以确定手表的位置,这可以通过使用定位跟踪软件或硬件来实现。此外,使用GPS定位系统可以根据IMEI码跟踪手表,从而精确定位其位置。此外,还可以使用无线电波和移动网络来定位手表,这取决于手表的功能。

14发布:服务器之家一、安卓:MAC:接入网络的设备的序号,唯一值。用 16 进制数表示,由 0-9,A-F 组成,如:44:2A:60:71:CC:82 Uuid正则表达式:^([0-9a-fA-F]{2})(([/\s:][0-9a-fA-F]{2}){5})$ 更加严格的话,其实分割符也没有空格---^([0-9a-fA-F]{2})(([:][0-9a-fA-F]{2}){5})$ 二、IOS:

ios<70 使用mac地址1、IDFA: CCD6E1CD-8C4B-40CB-8A62-4BBC7AFE07D6正则表达式: rlike '^([0-9a-zA-Z]{1,})(([/\s-][0-9a-zA-Z]{1,}){4})$'三、IMEI:国际移动设备身份码的缩写,是由15位数字组成的"电子串号",唯一值,如:351710058880864正则表达式:rlike '^[0-9]$'^([0-9a-fA-F]{2})(([0-9a-fA-F]{2}){5})$ 表示中间没有任何符号u盘装win7系统怎么分区 u盘安装系统winmac 360企业云盘 360企业云盘来了巫师2怎么调全屏 增强版》画面设置优化科目英语 会计科目英文对照表django重新建表 Django如何在数据库中创cifs端口 Samba服务使用的端口和协议如何看待当今的古装剧 就知道现在古装剧封印者金币寄售 日

关于本站 | ****

/

获取手机IMEI

/

private static StringgetIMEI(Context context) {

if (BuildVERSIONSDK_INT >= BuildVERSION_CODESQ) {

return null;

    }

try {

TelephonyManager telephonyManager = (TelephonyManager) contextgetSystemService(ContextTELEPHONY_SERVICE);

        if (telephonyManager ==null) {

return null;

        }

@SuppressLint({"MissingPermission", "HardwareIds"}) String imei = telephonyManagergetDeviceId();

        return imei;

    }catch (Exception e) {

return null;

    }

}

以上就是关于android imei获取全部的内容,包括:android imei获取、怎样辨别手机的真伪输入那些代码、如何使用imei码定位手表位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9480936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存