我有一个双卡手机,我的应用程序在其上显示SIM和操作员的详细信息。但(显然)它检测并显示只有SIM1而不是SIM2的细节。有没有办法可以访问SIM2的详细信息?
我知道默认情况下Android不支持双SIM卡,移动设备制造商会调整它,以便Android使用选择的 SIM(SIM1或SIM2,无论用户选择哪个)作为主要设备(用于拨打电话)而另一个SIM处于待机状态(收到呼叫时启动)。必须有一种方法来检测此主SIM卡。
我对同时获取两个SIM详细信息不感兴趣。仅需要用户选择作为主要拨打电话的SIM卡的详细信息。
任何链接/工作示例/建议,任何形式的帮助都将受到高度赞赏。
由于
答案 0 :(得分:2)
要在控制台中查看SIM1类型的状态: adb shell dumpsys telephony.registry
要在控制台中查看SIM2类型的状态: adb shell dumpsys telephony.registry2
传入/传出呼叫时mCallState已更改。它可以让您知道用于呼叫的SIM卡
要查看其他一些信息: adb shell getprop | grep gsm
从Java应用程序调用dumpsys时,清单中需要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();
}
答案 1 :(得分:1)
步骤1:列出每个拥有1个以上双卡设备的Android设备制造商。
步骤2:联系这些制造商并询问他们的问题。
正如你所写:
我知道默认情况下Android不支持双SIM卡,移动设备制造商会调整它
不要求任何给定的设备制造商必须像对待任何其他制造商那样调整它,并且不要求任何给定的设备制造商必须以应用开发者可见的方式调整它。因此,如果实际可获得应用程序支持,获取所需信息的唯一方法是联系制造商。