检测双SIM卡Android手机中的两张SIM卡的状态

我想以编程方式检测我的双卡android手机中是否有两个SIM卡。 我find了一个API( TelephonyManager.getSIMState() ),但它是用于普通的单SIM卡手机。 有没有任何API可以检测我的双SIM卡手机中是否插入了两张SIM卡?

Solutions Collecting From Web of "检测双SIM卡Android手机中的两张SIM卡的状态"

Android不支持多个SIM,至less从SDK。 已经创build了多SIM设备的设备制造商正在自己做。 欢迎您与您的设备制造商联系,看看他们是否有一个SDK附加软件或允许您访问第二张SIM卡的东西。

编辑:( 2015年7月15日)

从API 22开始,您可以使用SubscriptionManagergetActiveSubscriptionInfoList()方法检查多个SIM卡。 有关Android文档的更多详细信息。

从现在开始,如果手机是MTK支持的,那么可以使用MediaTek SDK中的TelephonyManagerEx类。

看看文档 。

那么,这不是傻瓜certificate。 但是如果你有两个不同的networking运营商的SIM卡,你可以尝试这样的:

 PhoneServiceStateListener listener = new PhoneServiceStateListener(this); tm.listen(listener, PhoneStateListener.LISTEN_SERVICE_STATE); . . . class PhoneServiceStateListener extends PhoneStateListener { Context context = null; public PhoneServiceStateListener(Context context) { this.context = context; } public PhoneServiceStateListener() { } @Override public void onServiceStateChanged(ServiceState serviceState) { if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) { //You get this event when your SIM is in service. //If you get this event twice, chances are more that your phone is Dual SIM. //Alternatively, you can toggle Flight Mode programmatically twice so //that you'll get service state changed event. } super.onServiceStateChanged(serviceState); } } 

理想情况下,你会得到两个SIM卡SIM服务状态改变事件,然后你可以检查networking运营商名称或类似的东西,以检查你是否有两个SIM卡。 但是您需要在两个不同的networking上运行两个SIM卡。

 final SubscriptionManager subscriptionManager = SubscriptionManager.from(getApplicationContext()); final List<SubscriptionInfo> activeSubscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList(); int simCount = activeSubscriptionInfoList.size(); btnBack.setText(simCount+" Sim available"); Log.d("MainActivity: ","simCount:" +simCount); for (SubscriptionInfo subscriptionInfo : activeSubscriptionInfoList) { Log.d("MainActivity: ","iccId :"+ subscriptionInfo.getIccId()+" , name : "+ subscriptionInfo.getDisplayName()); }