То, что вы просите, невозможно без root.
Как уже было сказано в комментариях, физически невозможно изменить ICCID SIM-карты, если это не a специальная SIM-карта с возможностью записи .
Что касается вызова getSimCountryIso
и getNetworkCountryIso()
, это системные API. Без root невозможно вмешаться в их работу.
Android имеет несколько уровней безопасности, включая ограничение доступа к приложениям на основе прав пользователя, принудительное применение SE Linux по умолчанию включена, проверка достоверности является частью проверенной загрузки и др.
Если у вас есть root на устройстве, вы можете создать модуль Xposed framework которые могут перехватить эти функции и перезаписать их возвращаемое значение.
Если вам интересно, таблица, используемая для преобразования информации ICCID в двухбуквенное название страны, жестко запрограммирована здесь . В случае, если эта ссылка не открывается правильно - она начинается со строки 316.
Поэтому изменение этого потребует перекомпиляции одного из основных JAR-файлов ОС.
Также обратите внимание, что в зависимости от вашего реального цель, изменение результата этих двух функций может вообще не работать.
Например, если вы хотите создать учетную запись Google с телефона для другой страны, смена SIM-карты не поможет, поскольку Google все равно посмотрите на свой IP-адрес, независимо от того, как вы подключены к inte rnet.