我正在研究客户端 - 服务器Android应用程序,并试图找出如何明确地识别服务器的不同电话/用户.我的第一次尝试是使用SIM卡上的电话号码.虽然我现在考虑过这个问题,但是当你改变运营商时,你的电话号码有多少变化?我想这取决于国家/地区等.
无论如何,我一直想弄清楚,因为我没有实际的Android手机,如何更改模拟器手机的手机号码来模拟不同的用户.是否有可能或者我应该考虑其他识别方法?
如何在没有 root 访问权限的情况下以编程方式更改 Android 手机 SIM 卡的国家/地区和网络?我正在使用此代码来检索信息:
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
System.out.println(tm.getSimCountryIso()); // prints 'us', but I want it to be 'fr'
System.out.println(tm.getNetworkCountryIso()); // prints 'us, but I want it to be 'fr'
Run Code Online (Sandbox Code Playgroud)
由于我的 SIM 卡来自美国,因此两个输出均为us. 例如,如何以编程方式使输出为fr(法国)?
基本上,例如,我想欺骗我的智能手机,使其认为其 SIM 卡的国家和网络是法国。
像这样的东西将是完美的,但它不存在:
tm.setSimCountryIso('fr')
tm.setNetworkCountryIso('fr')
到目前为止我们正在使用这种方法如何更改Android模拟器中的移动国家代码(MCC)?更改SIM国家/地区值.由于我们使用API 24运行我们的模拟设备,因此模拟器保留默认的美国国家/地区代码.
这就是我们在gradle中运行它的方式:
tasks.withType(Test) {
systemProperties = System.getProperties()
systemProperty "buildDir", "${buildDir}"
systemProperty "file.encoding", "UTF8"
beforeTest {
logger.info "restoring android emulator SIM country to AT"
exec {
commandLine "bash", "-c", "source ~/.bash_profile && adb -e shell setprop gsm.sim.operator.iso-country at
ignoreExitValue true
}
}
}
Run Code Online (Sandbox Code Playgroud)