20

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

4

4 回答 4

35

Android 不支持多个 SIM 卡,至少来自 SDK。已创建多 SIM 卡设备的设备制造商正在自行开发。欢迎您联系您的设备制造商,看看他们是否有 SDK 插件或允许您访问第二张 SIM 卡的东西。

编辑: (2015 年 7 月 15 日)

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

于 2011-11-03T14:32:28.150 回答
3

从现在开始,如果手机是 MTK 驱动的,您可以使用 MediaTek SDK 中的 TelephonyManagerEx 类。

看看文档

于 2014-11-28T18:57:05.447 回答
1

好吧,这不是万无一失的。但是,如果您有两个 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 卡。

于 2013-01-31T06:49:51.303 回答
1
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());
    }
于 2017-12-20T07:54:15.337 回答