2010-04-14 4 views
6

Мое приложение Android должно реагировать по-разному на различные коды мобильных стран.Как изменить код мобильного телефона (MCC) в Android-эмуляторе?

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

ответ

0

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

+0

Хорошая идея, но это не сработало.Когда я попробовал это, APN исчез из списка, и мое приложение больше не могло получить доступ к сети. – neu242

+0

Ну, в моем случае APN исчез, и я получил: «Нет сетевого подключения», когда я запустил браузер. Но когда я понял предупреждение, я смог заняться серфингом в Интернете. Странное поведение. В любом случае вы можете выполнить «Сброс по умолчанию» на странице APN и вернуть свой прежний APN. – Samuh

0

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

+0

Хотя я полностью согласен с сказанным, это не отвечает на реальный вопрос. –

0

Невозможно изменить 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, хотя.

0

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

adb -s 127.0.0.1:53001 shell 

Затем поместите код страны там. 23801 - датский код coutry.

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

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

setprop persist.droid4x.mccmnc 23801 

Reboot эмулятор.

+0

Свойство установлено, но я не думаю, что это работает - TelephonyManager не читает это свойство при возврате getSimCountryIso() afaik –

+0

он отлично работает для Droid4x – prouser135

7

Чтобы изменить то, что TelephonyManager.getSimCountryIso() возвращается, просто выполнить

adb shell setprop gsm.sim.operator.iso-country no 

и теперь он не возвращает (Норвегия).

Если вы хотите, чтобы изменить то, что TelephonyManager.getSimOperator() возвращается (MCC + MNC), а затем выполнить

adb shell setprop gsm.sim.operator.numeric 24201 

и вы изменили МСС до 242 (Норвегия) и MNC до 01 (Telenor).

Чтобы узнать, какие другие свойства, которые можно изменить затем выполнить

adb shell getprop 

Это проверено на работу как на AVD и Genymotion. Однако это не изменяет эти свойства настойчиво.

+0

Это работает! Большой совет тоже проверяет, какие реквизиты можно установить! Спасибо – speedynomads

+0

это не работает для меня, если я получаю getprop сразу после setprop, я все равно получаю «нас». Любая идея почему? –

+0

@AlexandruCristescu Это на эмуляторе? –

Смежные вопросы