如何更改Android模拟器中的移动国家/地区代码(MCC)?

时间:2010-04-14 13:15:44

标签: android android-emulator mcc mobile-country-code

我的Android应用程序需要对不同的移动国家代码做出不同的反应。

似乎它被硬编码为 mcc310(美国)。我可以从TelephonyManager.getSimCountryIso()或使用res/values-mcc123/等资源文件夹中读取此值,但如何在模拟器中设置此值?

5 个答案:

答案 0 :(得分:12)

要更改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。但是,这不会持续改变这些属性。

答案 1 :(得分:2)

我观察到此属性的值在某些API级别有所不同。我试图解决这个问题。

您可以使用以下命令更改API 26上的值:

  1. su
  2. setprop gsm.operator.numeric 280701
  3. adb shell
  4. 注意:某些模拟器需要重启。

    在某些模拟器上,属性可以是不同的名称

    您可以按以下方式找到属性名称:

    1. getprop
    2. ... [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] ...
    3. 它将为您提供类似于以下内容的数据:

      numeric

      通过复制文本文件中的输出来搜索setprop <property name> <new MCC MNC>。获取属性名称并使用getProp

      您还可以使用{{1}}来验证值是否已更改。

答案 2 :(得分:1)

只能使用ADB更改模拟器中的MCC + MNC。要更改仿真器中的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

重新启动模拟器。

答案 3 :(得分:0)

在模拟器上:转到设置 - &gt; WireLess和网络 - &gt;移动网络 - &gt;接入点名称。尝试更改设置的APN中的MCC值,然后尝试使用您的代码。

答案 4 :(得分:0)

请注意,在每个国家/地区依赖MCC并不总是正确的。例如,Digicell在几个国家/地区使用一个MCC + MNC。还要明白,从网络的角度来看,MCC的整体想法是相当荒谬的。如果您使用AT&amp; T手机使用T-Mobile,那么知道您是在德国还是在荷兰是无关紧要的。