使用Android模拟器更改TelephonyManager.getNetworkCountryIso输出

时间:2018-04-19 11:17:01

标签: android android-studio geolocation android-emulator

我正在创建一个使用用户位置的应用来确定向用户显示的数据。我正在使用TelephonyManager.getNetworkCountryIso(不是sim版本)来确定位置,它就像魅力一样。无论如何,我可以通过更改模拟器设置中的设置来进一步测试,这样我就可以让它相信手机在美国以外的其他国家/地区(默认)。

目前TelephonyManager.getNetworkCountryIso输出:“us”

注意:我知道getNetworkCountry也有一些缺点,但这是另一个讨论: - )

1 个答案:

答案 0 :(得分:2)

您可以使用以下命令更改值:

  1. adb shell
  2. su
  3. setprop gsm.operator.iso-country uk
  4. 在某些模拟器上,您可能需要重新启动才能产生影响。
  5. 请参阅下面的ScreenShot: cmd

    在某些模拟器上,属性名称可能不同。

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

    1. adb shell
    2. getprop
    3. 它将为您提供类似于以下内容的数据:

      ...
      [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]
      ...
      

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

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