Поведение TelephonyManager.getDeviceId() в Android L и старых устройствах с двумя SIM-картами
Каково поведение TelephonyManager.getDeviceId() в Android L и более старых устройствах с двумя SIM-картами? Я знаю, что в API Level 23 (Android M) был добавлен TelephonyManager.getDeviceId(int slotId), чтобы мы могли указать, из какого гнезда SIM-карты нужно извлекать IMEI, но как быть с более старыми устройствами? Будет ли всегда возвращаться IMEI из первого слота или он недетерминирован? Я не могу найти официальную документацию по этому вопросу.
Спасибо!
2 ответа
Исходя из моего опыта, вы могли бы получить на старых устройствах сим, настроенный как основной или сим по умолчанию для звонков в настройках телефона. Так что вы не всегда получите первый сим слот IMEI. если для звонков по умолчанию нет сима (всегда спрашивать опцию), то возвращается первый слот сима IMEI.
Проще говоря, IMEI/Device Id помечен для слота sim.
Для телефонов с двумя SIM-картами есть три значения IMEI (по одному для каждого слота) и IMEI-SV.
Допустим, IMEI для слота 1: 123456789012345
IMEI для слота 2: 012500123456789
В зависимости от сценариев ниже приводится возвращаемое значение telephonyManagerObj.getDeviceId():
- Если у вас нет SIM-карты, метод вернет IMEI для slot1, т.е. 123456789012345
- Если у вас есть SIM-карта в слоте 1, метод вернет IMEI для слота 1, то есть 123456789012345
- Если у вас есть SIM-карта в обоих слотах, метод вернет IMEI для slot1, т.е. 123456789012345
- Но если у вас есть SIM-карта только в слоте 2, метод вернет IMEI для слота 2, т.е. 012500123456789
- Я обнаружил, что на одном устройстве, когда я неправильно вставил SIM-карту в слот 1, метод вернул IMEI-SV