Android getDeviceId(0)返回不同的结果
出于某些特定的原因,我需要在我的Android应用程序的某个点上获得IMEI。以下是我使用的代码:Android getDeviceId(0)返回不同的结果,android,imei,huawei-mobile-services,Android,Imei,Huawei Mobile Services,出于某些特定的原因,我需要在我的Android应用程序的某个点上获得IMEI。以下是我使用的代码: TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){ // API available only >= 6.0
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
// API available only >= 6.0
// Get first slot to avoid issue if we have multiple sim cards
String imei = tm.getDeviceId(0);
}
else
{
String imei = tm.getDeviceId();
}
它在大多数情况下工作正常。然而,一些设备(如华为荣誉7)提供双sim卡功能。在设置中,用户可以在两张SIM卡之间切换以支持3G/4G
当我有两张SIM卡并切换时,我得到的IMEI是不同的
据我所知,IMEI与物理插槽相关,不应更改。这看起来像是构造函数的错误实现
有什么解决办法吗?正如您所说,IMEI/设备Id被标记到sim卡插槽 对于双SIM手机,有三个IMEI值(每个插槽一个)和IMEI-SV 假设插槽1的IMEI为:123456789012345 插槽2的IMEI为:012500123456789 根据场景的不同,以下是telephonyManagerObj.getDeviceId()返回的值:
请小心,Android O中已弃用。请检查备选方案谢谢您的精确性。看起来IMEI太不一致了,不能用作唯一的设备标识符。此外,如果你的目标是没有SIM卡插槽的平板电脑,就不会有任何IMEI。