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) {

就是华为系统风险提示,你可以自己在手机设置里设置或者同意安装就可以了。一般华为手机安装软件都通过华为应用,所以之外的app需要授权,和风险提示。就是要授权允许,华为之外的应用安装权限。

你好。

双清下试试:

红米1S-联通/电信版、4G版红米NOTE和小米手机系列采用高通的处理器,(米3移动版用的是英伟达处理器,但是三清方法相同。)三清方法如下:

备份~然后关机~同时按住音量键上和电源键(或者系统更新,点击菜单键,重启到recovery)~进入recovery后用音量键选择,电源键确认,选择清除数据,清除缓存'清除所有数据,这就是三清。

PS:记得一定提前备份。最好将备份包保存到电脑上,将来可以恢复回来。

——————————————————————

由于红米MTK系列(除了红米1S-联通/电信版、4G版红米NOTE采用高通CPU外),其余都是采用MTK的CPU,故进入recovery模式的方法与小米其他机型是不一样的!

在此,我们手把手教你进入红米系列-Recovery、Fastboot模式、卡刷、双清!

(需要注意的是红米recovery模式 :音量减键---是选择 音量加键---是确认)

————————————————————

红米系列(MTK)进入recovery的方法:

1关机状态下,同时按住音量下+电源键 ,屏幕亮起松开按键,选择进入Recovery

(出现绿色机器人图时,按一下“电源键”进入菜单)。

或者点击系统更新,点击菜单键--选择重启到Recovery,点击确定,手机会重启进入Recovery模式,看到一只躺在地上的绿色安卓机器人(和山寨机一样 我和我的小伙伴都惊呆了),最后按电源键进入。

2按“音量下”选择 Recovery 然后再按“音量上”确认,选择wipe data/factory reset →选择YES - 按“音量上”确认 ,等待清除完成。

3用“音量下”选择wipe cache partition → YES - 按”音量上”确认。

如果你方便请打开该链接,里面有图文介绍:>

建议你使用线刷重新刷一次MIUI完整包(稳定版,开发版你根据自己的使用选择),尝试可否正常:

先用小米手机的备份工具来备份的,打开桌面上的系统与安全~备份~新建备份,然后进入recovery模式三清数据。

备份是把手机里面的资料打包备份在内存卡(米2系列和米3移动版是内存设备)里面的,三清数据,只会清除手机内部存储里面的资料,不会清空内存设备上面的。

以上就是关于android imei获取全部的内容,包括:android imei获取、华为手机安装软件出现无法获取imei权限是什么情况、红米note总是显示无法获取imei等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存