我正在使用TelephonyManager.getDeviceId(0)
来获取设备imei的第一个SIM卡插槽。但是在我看来,它不会每次都返回我的第一个插槽IMEI。我有两个带有两个SIM卡插槽但未连接SIM卡的手机。
1. Symphony i10 +,API 24-返回第一个SIM卡插槽Imei。
2. Huawei CAM L21,API 23-返回第二个SIM卡插槽imei。
这是我的代码:-
public static String getDeviceId(Context context) {
String deviceId = DEVICE_ID;
if (!Validator.isValid(deviceId)) {
try {
TelephonyManager tManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
deviceId = tManager.getImei(0);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
deviceId = tManager.getDeviceId(0);
} else {
deviceId = tManager.getDeviceId();
}
}
} catch (Exception e) {
e.printStackTrace();
try {
deviceId = Settings.Secure.getString(context.getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID);
} catch (Exception e1) {
e1.printStackTrace();
}
}
DEVICE_ID = deviceId;
}
return deviceId;
}
为消除这种混乱,我删除了类似-
的slot index方法else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
deviceId = tManager.getDeviceId();
}
然后它在两个手机上都给了我第一个SIM卡插槽IMEI。但是在这种情况下调用getDeviceId()
是正确的,每次都会返回我的第一个时隙IMEI吗?
不过我已经读过TelephonyManager.getDeviceId(0) returns different results这篇帖子。