我有一部双 SIM 卡手机,我的应用会在上面显示 SIM 卡和运营商的详细信息。但是(显然)它只检测并显示 SIM1 而不是 SIM2 的详细信息。有没有办法可以访问 SIM2 详细信息?
我知道 Android 默认情况下不支持双 SIM 卡,并且移动制造商对其进行了调整,使 Android 使用选定 SIM 卡(SIM1 或 SIM2,无论用户选择哪个)作为主要(用于调用电话),另一张 SIM 卡处于待机状态(接到电话时启动)。必须有一种方法来检测这个主 SIM 卡。
我对同时获取两张 SIM 卡的详细信息不感兴趣。仅需要用户选择的主要用于调用电话的 SIM 卡的详细信息。
任何链接/工作示例/建议,任何类型的帮助都将不胜感激。
谢谢
最佳答案
要在控制台中查看 SIM1 类型的状态: adb shell dumpsys telephony.registry
要在控制台中查看 SIM2 类型的状态: adb shell dumpsys telephony.registry2
mCallState 在来电/去电时发生变化。它可以让您知道通话使用的是哪张 SIM 卡
要查看一些附加信息: adb shell getprop|grep gsm
当您从 Java 应用程序调用 dumpsys 时,您需要 list 中的 android.permission.DUMP。但它不适用于某些新设备。
在某些手机上可以使用此代码来知道 default sim card :
Object tm = getSystemService(Context.TELEPHONY_SERVICE);
Method method_getDefaultSim;
int defaultSim = -1;
try {
method_getDefaultSim = tm.getClass().getDeclaredMethod("getDefaultSim");
method_getDefaultSim.setAccessible(true);
defaultSim = (Integer) method_getDefaultSim.invoke(tm);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Method method_getSmsDefaultSim;
int smsDefaultSim = -1;
try {
method_getSmsDefaultSim = tm.getClass().getDeclaredMethod("getSmsDefaultSim");
smsDefaultSim = (Integer) method_getSmsDefaultSim.invoke(tm);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
关于android - 在双卡手机中检测当前/主 SIM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20934274/