Я использую TelephonyManager.getDeviceId(0)
для получения устройства imei для первого слота SIM.Но мне кажется, что это не возвращает мне первый слот IMEI каждый раз.У меня есть два мобильных телефона с двумя слотами для сим-карт, но без сим-карты.
1. Symphony i10 +, api 24 - возвращает первый сим слот imei.
2. Huawei CAM L21, api 23 - возвращает второй сим слот 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;
}
Чтобы избавиться от этой путаницы, я удалил метод индексации слотов как -
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
deviceId = tManager.getDeviceId();
}
Затем он дает мне первую симСлот IMEI в обоих мобильных телефонах.Но в данном случае это правильно - getDeviceId()
, и мне каждый раз будет возвращаться IMEI первого слота?
Я прочитал TelephonyManager.getDeviceId (0) возвращает разные результаты хотя это сообщение.