Программно изменить страну SIM? - PullRequest
5 голосов
/ 11 июля 2020

Как я могу программно изменить страну и сеть SIM-карты телефона Android без доступа root? Я использую этот код для получения информации:

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

System.out.println(tm.getSimCountryIso()); // prints 'us', but I want it to be 'fr'
System.out.println(tm.getNetworkCountryIso()); // prints 'us, but I want it to be 'fr'

Поскольку моя SIM-карта из США, оба выхода - us. Как я могу программно сделать вывод, например, fr (Франция)?

По сути, я хочу обмануть свой смартфон, заставив его думать, что страна и сеть его SIM-карты - Франция , например.

Что-то вроде этого было бы идеально, но его не существует:

tm.setSimCountryIso('fr')

tm.setNetworkCountryIso('fr')

1 Ответ

10 голосов
/ 13 июля 2020

То, что вы просите, невозможно без root.

Как уже было сказано в комментариях, физически невозможно изменить ICCID SIM-карты, если это не a специальная SIM-карта с возможностью записи .

Что касается вызова getSimCountryIso и getNetworkCountryIso(), это системные API. Без root невозможно вмешаться в их работу.

Android имеет несколько уровней безопасности, включая ограничение доступа к приложениям на основе прав пользователя, принудительное применение SE Linux по умолчанию включена, проверка достоверности является частью проверенной загрузки и др.

Если у вас есть root на устройстве, вы можете создать модуль Xposed framework которые могут перехватить эти функции и перезаписать их возвращаемое значение.

Если вам интересно, таблица, используемая для преобразования информации ICCID в двухбуквенное название страны, жестко запрограммирована здесь . В случае, если эта ссылка не открывается правильно - она ​​начинается со строки 316.

Поэтому изменение этого потребует перекомпиляции одного из основных JAR-файлов ОС.

Также обратите внимание, что в зависимости от вашего реального цель, изменение результата этих двух функций может вообще не работать.

Например, если вы хотите создать учетную запись Google с телефона для другой страны, смена SIM-карты не поможет, поскольку Google все равно посмотрите на свой IP-адрес, независимо от того, как вы подключены к inte rnet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...