有谁知道是否可以设置模拟器的手机号码?我无法在任何地方找到相关信息。谢谢。
主要完全控制本博客末尾详述的电话号码:
http://blog.talosintel.com/2013/04/changing-imei-provider-model-and-phone.html
前7个是完全可配置的,后4个可以是16个允许的端口号之一。
事实证明,电话号码存储在SIM卡上。由于没有实际的SIM卡,因此可以模拟一张SIM卡。此仿真SIM在仿真器 - arm二进制文件中进行了硬编码。 1555521的替换失败的原因是因为SIM卡的规范不能以纯文本形式存储MSISDN(移动用户综合业务数字网络号码,AKA电话号码)。相反,每组数字都在一些反向啃咬的字节序噩梦中交换。
...找到MSISDN的一种快捷方法是在二进制文件中搜索%d%df%d(下面以红色突出显示)。相应的源代码位于当前仓库中第436行的external / qemu / telephony / sim_card.c中。以下是该sprintf的格式字符串部分:
"+CRSM:144,0,ffffffffffffffffffffffffffffffffffff0781515525%d1%d%df%dffffffffffff"
有趣的部分是515525%d1(以蓝色突出显示)。交换每组两位数产生1555521%d(再次感谢CodePainters)。这看起来像我们手机号码的前缀。
在十六进制编辑器中编辑它。
您可以在模拟器中模拟传入的短信和呼叫(使用模拟器的端口),但就是这样,您无法设置设备号或类似的东西。对于那种事情,你需要一个真正的设备。
我发现每个模拟器都有一个电话号码。如果您运行两个模拟器,则可以从一个模拟器调用另一个模拟器。要查找此电话号码,您可以在终端窗口中运行:
Path\To\Your\Android\Sdk\platform-tools>adb devices
List of devices attached
emulator-5554 device
emulator-5556 device
第一个电话号码是+15555215554
,第二个+15555215556
,即电话号码是前缀+1555521
加上模拟器后缀5554
或5556
。
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
// get IMEI
String imei = tm.getDeviceId();
System.out.println("gfvnchgjvbnvhjbbnvgjvbncghvmn ngvm"+imei);
// get SimSerialNumber
String simSerialNumber = tm.getSimSerialNumber();
System.out.println("854755745588954754855ngvm"+simSerialNumber);
//get SimCardNumber
String number = tm.getLine1Number();
System.out.println("gfch5652345651szdxfcgvhbjnfcgvh ngvm"+number);
And Import :]->
import android.content.Context;
import android.telephony.TelephonyManager;
模拟器的移动号码是该模拟器的端口号。更多细节。请检查此链接:
http://developer.android.com/guide/developing/devices/emulator.html#calling