我想通过编程方式检测我的双SIM卡android手机中是否有两张SIM卡。我找到了一个接口(TelephonyManager.getSIMState()
),但它只适用于普通的单SIM卡手机。我的双卡手机是否插入了两个SIM卡,有什么接口可以检测吗?
发布于 2014-11-29 02:57:05
从现在开始,如果手机是MTK驱动的手机,你可以使用MediaTek SDK中的TelephonyManagerEx类。
看看the docs吧。
发布于 2013-01-31 14:49:51
好吧,这不是愚蠢的证据。但是如果你有两个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卡。
发布于 2017-12-20 15:54:15
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());
}
https://stackoverflow.com/questions/7996197
复制相似问题