如何在Android模拟器中修改TelephonyManager.getNetworkCountryIso输出?
嘿,很高兴听到你的位置判定功能运行得不错!针对你的问题,完全可以通过调整Android模拟器的设置来模拟美国以外的其他国家,进而测试TelephonyManager.getNetworkCountryIso()的输出。下面是几种实用的方法,你可以根据自己的场景选择:
修改模拟器移动网络设置
打开模拟器的「设置」,依次进入「网络和互联网」→「移动网络」(部分版本叫「蜂窝网络」)。找到「网络运营商」选项,切换到「手动选择网络」,这里会列出模拟器内置的虚拟运营商,选择对应国家的运营商(比如测试日本选带JP标识的,测试德国选DE相关的)。选完后重启模拟器,再调用TelephonyManager.getNetworkCountryIso()就能得到对应的国家代码了。用ADB命令强制设置
确保你的电脑已经配置好ADB环境,且模拟器处于运行状态。打开终端/命令提示符,输入以下命令(以设置法国为例,国家代码为fr):adb shell settings put global network_country_code fr执行完命令后,要么重启模拟器的移动网络服务,要么直接重启模拟器,之后获取
getNetworkCountryIso()的结果就会变成fr。注意:部分Android版本可能需要模拟器开启root权限才能生效,你可以在创建模拟器时勾选「启用root访问」,或者选择带Google APIs的镜像。创建新模拟器时指定地区
打开Android Studio的AVD Manager,点击「Create Virtual Device」。在选择系统镜像步骤,挑选对应地区的镜像(比如选巴西的镜像,默认网络国家代码就是br)。完成创建后启动模拟器,默认的网络国家代码就会匹配所选地区,这种方式适合长期测试特定地区的场景。
小提示:有些Android版本会缓存网络国家代码,修改后建议先清除你的应用数据,再重启应用,确保能获取到最新的代码。
内容的提问来源于stack exchange,提问作者fayyaz




