有人知道是否可以设置模拟器的手机号码吗?我无法在任何地方找到相关信息。谢谢。
本文末尾提供的电话号码基本上可以完全控制:
http://blog.talosintel.com/2013/04/changing-imei-provider-model-and-phone.html
前7位数字是可配置的,后4位数字必须是16个允许的端口号之一。
事实证明,电话号码存储在SIM卡上。由于没有实际的SIM卡,因此需要模拟一个。这个模拟的SIM卡被硬编码在emulator-arm二进制文件中。替换1555521的原因是因为SIM卡有一个规范,不会以纯文本形式存储MSISDN(移动用户综合业务数字网号码,也就是电话号码)。相反,每组数字都会以某种反向nibbled endianness的噩梦方式进行交换。
... 查找MSISDN的快速方法是在二进制文件中搜索 %d%df%d (以下用红色突出显示)。对应的源代码在当前repo的external/qemu/telephony/sim_card.c的第436行。以下是sprintf的格式字符串部分:
"+CRSM:144,0,ffffffffffffffffffffffffffffffffffff0781515525%d1%d%df%dffffffffffff"
我发现每个模拟器都有一个电话号码。如果您运行两个模拟器,您可以从一个模拟器打电话给另一个模拟器。要查找这些电话号码,您可以在终端窗口中运行:
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