Как изменить код мобильного телефона (MCC) в эмуляторе Android?
Мое приложение Android должно реагировать по-разному на разные коды мобильных стран.
Кажется, что он жестко привязан к mcc310 (US). Я могу прочитать это значение из TelephonyManager.getSimCountryIso()
или с помощью папки ресурсов, например res/values-mcc123/
, но как установить это значение в эмуляторе?
Ответы
Ответ 1
Чтобы изменить то, что возвращает TelephonyManager.getSimCountryIso()
, просто выполните
adb shell setprop gsm.sim.operator.iso-country no
и теперь он возвращает no (Норвегия).
Если вы хотите изменить то, что возвращает TelephonyManager.getSimOperator()
(MCC + MNC), выполните
adb shell setprop gsm.sim.operator.numeric 24201
и вы изменили MCC на 242 (Норвегия) и MNC на 01 (Telenor).
Чтобы узнать, какие другие свойства вы можете изменить, выполните
adb shell getprop
Это проверено для работы как с AVD, так и с Genymotion. Однако это не изменяет эти свойства настойчиво.
Ответ 2
Я заметил, что значение для этих свойств варьируется в зависимости от уровня API. Я пытался решить эту проблему.
Вы можете использовать следующую команду для изменения значения в API 26:
-
adb shell
-
su
-
setprop gsm.operator.numeric 280701
Примечание. Некоторые эмуляторы требуют перезагрузки.
На некоторых эмуляторах свойство может иметь другое имя
Вы можете найти имя свойства следующим образом:
-
adb shell
-
getprop
Это даст вам данные, подобные следующим:
...
[dalvik.vm.lockprof.threshold]: [500]
[dalvik.vm.stack-trace-file]: [/data/anr/traces.txt]
[dalvik.vm.usejit]: [true]
[dalvik.vm.usejitprofiles]: [true]
[debug.atrace.tags.enableflags]: [0]
[debug.force_rtl]: [0]
[dev.bootcomplete]: [1]
[drm.service.enabled]: [true]
[gsm.current.phone-type]: [1]
[gsm.defaultpdpcontext.active]: [true]
[gsm.network.type]: [LTE]
[gsm.nitz.time]: [1524141151210]
[gsm.operator.alpha]: [Android]
[gsm.operator.iso-country]: [us]
[gsm.operator.isroaming]: [false]
[gsm.operator.numeric]: [310260]
[gsm.sim.operator.alpha]: [Android]
[gsm.sim.operator.iso-country]: [us]
[gsm.sim.operator.numeric]: [310260]
[gsm.sim.state]: [READY]
[gsm.version.baseband]: [1.0.0.0]
[gsm.version.ril-impl]: [android reference-ril 1.0]
[hwservicemanager.ready]: [true]
[init.svc.adbd]: [running]
[init.svc.audio-hal-2-0]: [running]
[init.svc.audioserver]: [running]
[init.svc.bootanim]: [stopped]
[init.svc.camera-provider-2-4]: [running]
[init.svc.cameraserver]: [running]
...
Поиск numeric
, скопировав вывод в текстовом файле. Получить имя свойства и использовать setprop <property name> <new MCC MNC>
Вы также можете использовать getProp
чтобы проверить, было ли изменено значение.
Ответ 3
Изменение MCC + MNC в эмуляторе может быть выполнено только с помощью ADB. Чтобы изменить MCC + MNC в эмуляторе, подключитесь к ADB, выполните следующие
adb -s 127.0.0.1:53001 shell
Затем введите код страны. 23801 - код датского coutry.
setprop persist.<name of the emulator>.mccmnc 23801
Для эмулятора Droid4X это
setprop persist.droid4x.mccmnc 23801
Перезагрузите эмулятор.
Ответ 4
В эмуляторе: перейдите в Настройки- > Проводная связь и Сеть- > Мобильная сеть- > Имена точек доступа. Попробуйте изменить значение MCC в наборе APN, а затем попробуйте код.
Ответ 5
Знайте, что полагаться на MCC не всегда правильно в каждой стране. Digicell, например, использует один MCC + MNC в нескольких странах. Также поймите, что вся идея MCC довольно смехотворна с точки зрения сети. Совсем не важно знать, находитесь ли вы в Германии или в Нидерландах, если оба раза вы на T-Mobile с телефоном AT & T.
Ответ 6
Кажется, что невозможно изменить MCC/MNC с помощью настроек на эмуляторе Android, каждый раз, когда это делается, предварительно настроенный "T-Mobile" APN исчезнет из списка, и сетевое подключение будет потеряно. У меня даже был эмулятор, спонтанно перезагрузившийся после изменения.
Программный способ тоже не работает, APN исчезнет сразу после:
[email protected]_x86:/ # content update --uri content://telephony/carriers/ --bind name:s:'TheAPN' --bind apn:s:apn.operator.net --bind numeric:i:12345 --bind user:s: --bind password:s: --bind server:s: --bind proxy:s: --bind mmsproxy:s: --bind mmsc:s: --bind type:s: --bind mcc:i:123 --bind mnc:i:45 --bind current:i:1 --where _id=1
Это можно было бы взломать эмулятор теми же способами, которые позволяют изменить MSISDN или IMEI.
Ответ 7
Я не хочу ничего менять, только регистрирую MCC... в файл и отправляю на ПК. По WIFI кажется невозможным; тогда это будет по почте.