我想要检测我的双卡android手机中是否有两张SIM卡以编程方式存在。我发现了一个API(TelephonyManager.getSIMState()
),但它适用于普通的单卡手机。有没有任何API可以检测我的双SIM卡手机中是否插入了两张SIM卡?检测双SIM卡Android手机中两张SIM卡的状态
回答
Android不支持多个SIM卡,至少从SDK。已经创建多SIM设备的设备制造商正在自行完成。欢迎您与您的设备制造商联系,看看他们是否有SDK附加组件或允许您访问第二张SIM卡的东西。
编辑:(2015年7月15日)
由于API 22,你可以检查使用SubscriptionManager
的方法getActiveSubscriptionInfoList()
多个SIM。有关Android Docs的更多详细信息。
那么,这不是傻瓜证明。但如果你有两个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卡改变事件,然后您可以检查网络运营商名称或者类似的东西来检查你是否有两张SIM卡。但是你需要在两个不同的网络上运行两个SIM卡。
它如何识别哪个SIM卡处于活动状态? – gonzobrains
@gonzobrains:哎呀,谢谢你的通知。更新了答案。 – Rajkiran
从现在起,如果手机是MTK支持的手机,您可以使用MediaTek SDK中的TelephonyManagerEx类。
看看the docs。
表面上[bcm_ds分支](https://code.google.com/p/android/issues/detail?id=14799#c26)或MediaTek SDK在[Android One]中是标准的(https://en.wikipedia .ORG /维基/ Android_One)。 [add](https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/b09babbf321c225b14abb013a6e1ed7041c45d06/src/com/android/providers/telephony/SmsProvider.java#275)'SmsManager.getDefault(slotId )'API。同时在Android One和MediaTek SDK中推出双SIM卡标准,并且是合作伙伴。增强[关闭“过时”](https://code.google.com/p/android/issues/detail?id=14799#c27)。 –
是的,这非常有帮助 –
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());
}
- 1. 从双SIM卡手机发送短信到另一张SIM卡
- 2. Android:如何在Android中获取两张SIM卡的SIM卡ID?
- 3. 双SIM卡Android
- 4. 获取SimOperatorName的双SIM卡android手机
- 5. Android:在双SIM手机getSimCountryIso()返回哪个SIM卡?
- 6. 双SIM卡更改默认SIM卡
- 7. 如果我的android手机有两张SIM卡,如何获取手机号码?
- 8. 如何检测SIM卡1或SIM卡2上的呼叫
- 9. 如何从双SIM卡手机中获得两个IMEI号码?
- 10. J2ME SIM卡更改检测
- 11. 检测SIM卡改变(codenameOne)
- 12. 如何在双SIM卡插槽中更改SIM卡的信息?
- 13. 如何在双SIM卡手机android中获取SIMOperator?
- 14. 具有相同IMSI的两张SIM卡
- 15. Android电话管理器检测SIM卡
- 16. 检查移动数据是从SIM卡或SIM卡2 Android
- 17. Android:如何在双卡手机中发送特定SIM卡的短信?
- 18. android sim卡听众
- 19. 如何使用双SIM卡手机中的SMSmanager发送短信?
- 20. 的SIM卡
- 21. 检测SIM卡变更或使用官方iOS SDK找到SIM卡的IMSI?
- 22. Sim卡托管?
- 23. 使用sharedpreferences检测SIM卡更改
- 24. 如何获得双SIM卡手机号码?
- 25. 如何获得Android手机中的SIM卡帐户余额
- 26. 如何知道Android手机中的SIM卡类型(2G,3G)
- 27. Android:德国SIM卡用户:getSimOperatorName()测试
- 28. 无法检测到SIM卡在android中的变化
- 29. iPhone SIM卡号码
- 30. 从手机和SIM卡读取所有联系人Android
[以下是完整的解决方案为您所寻找的(http://stackoverflow.com/a/17499889/703851) –
尝试使用MultiSim的库:http://stackoverflow.com/a/41544422/1665964 –