我的Android应用程序需要对不同的移动国家代码做出不同的反应。
似乎它被硬编码为 mcc310(美国)。我可以从TelephonyManager.getSimCountryIso()
或使用res/values-mcc123/
等资源文件夹中读取此值,但如何在模拟器中设置此值?
答案 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上的值:
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
您还可以使用{{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,那么知道您是在德国还是在荷兰是无关紧要的。