android获取imei兼容_Android如何获取双卡手机IMEI的方法示例

前言:

项目中有个统计付费广告转化率的需求,需要获取用户手机的IMEI。但是网上最常见的方法有坑,也就是TelephonyManager.getDeviceId(),这方法有可能获取的是MEID或者空值。然后自己Google了下,发现搜出来的靠前的几个答案都不能正确获取到两个IMEI值。然后看到TelephonyManager源码中getDeviceId()方法的下一个方法就是getImei()方法,只不过被系统隐藏掉了。运用反射调用一下,的确能获取两个IMEI值,故在此分享一下~~

背景:

一般的获取IMEI的代码是这样的

public static String getIMEI(Context context) {

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

String imei = telephonyManager.getDeviceId();

return imei;

}

源码中的注释已经说明了,这方法可能返回IMEI,也可能返回MEID。我用的华为返回的就是MEID。他还有个带参数的方法getDeviceId(int slotId),这个slotId应该就是卡槽编号,可能也能获取到双卡手机的DeviceId,不过我没尝试,因为反正他返回的不一定是我想要的IMEI。

解决方法:

利用反射,把系统隐藏掉的getImei()调用出来。

/**

* @param slotId slotId为卡槽Id,它的值为

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值