Как изменить мобильный код страны (MCC) в эмуляторе Android? - PullRequest
14 голосов
/ 14 апреля 2010

Мое приложение Android должно по-разному реагировать на разные коды мобильных телефонов.

Кажется, что он жестко задан в mcc310 (US) .Я могу прочитать это значение из TelephonyManager.getSimCountryIso() или с помощью папки ресурсов, например res/values-mcc123/, но как мне установить это значение в эмуляторе?

Ответы [ 6 ]

12 голосов
/ 27 мая 2016

Чтобы изменить то, что возвращает 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 голосов
/ 19 апреля 2018

Я заметил, что значение для этих свойств варьируется в зависимости от уровня API. Я пытался решить эту проблему.

Вы можете использовать следующую команду для изменения значения в API 26:

  1. adb shell
  2. su
  3. setprop gsm.operator.numeric 280701

Примечание: Некоторые эмуляторы требуют перезапуска.

На некоторых эмуляторах свойство может иметь другое имя

Название недвижимости можно найти следующим образом:

  1. adb shell
  2. 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, чтобы проверить, было ли изменено значение.

1 голос
/ 10 ноября 2015

Изменение MCC + MNC в эмуляторе возможно только с помощью ADB. Чтобы изменить MCC + MNC в эмуляторе, подключитесь к ADB и выполните следующее

adb -s 127.0.0.1:53001 shell

Тогда поместите туда свой код страны. 23801 - код страны Дании.

setprop persist.<name of the emulator>.mccmnc 23801

Для эмулятора Droid4X это

setprop persist.droid4x.mccmnc 23801

Перезагрузите эмулятор.

0 голосов
/ 26 августа 2015

Невозможно изменить MCC / MNC через настройки на эмуляторе Android, при каждой попытке предварительно настроенная APN "T-Mobile" исчезает из списка, и сетевое подключение теряется. У меня даже эмулятор самопроизвольно перезагружался после изменения.

Программный способ также не работает, APN исчезнет сразу после:

root@generic_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 , хотя.

0 голосов
/ 18 мая 2010

Знайте, что полагаться на MCC не всегда правильно в каждой стране. Например, Digicell использует один MCC + MNC в нескольких странах. Также поймите, что сама идея MCC довольно нелепа с сетевой точки зрения. Довольно нерелевантно знать, находитесь ли вы в Германии или в Нидерландах, если вы оба раза используете T-Mobile с телефоном AT & T.

0 голосов
/ 14 апреля 2010

В эмуляторе: зайдите в Настройки-> Беспроводная связь и Сеть-> Мобильная сеть-> Точки доступа. Попробуйте изменить значение MCC в установленном APN, а затем попробуйте свой код.

...