Android 判断有效的Sim card数

通过查看android的TelephonyManager源码,得到以下方法来获取设备卡槽数和sim卡数
1.获取设备卡槽数
/** 
* Returns the number of phones available. 
* Returns 1 for Single standby mode (Single SIM functionality) 
* Returns 2 for Dual standby mode.(Dual SIM functionality) 
*/ 
public static int getSimCardCount(Context context) { 
    TelephonyManager mTelephonyManager = (TelephonyManager)         context.getSystemService(Context.TELEPHONY_SERVICE);
    Class cls = mTelephonyManager.getClass();
    try { 
        Method mMethod = cls.getMethod("getSimCount"); 
        mMethod.setAccessible(true); 
        return (int) mMethod.invoke(mTelephonyManager);
    } catch (NoSuchMethodException e) { 
        e.printStackTrace(); 
    } catch (InvocationTargetException e) { 
        e.printStackTrace(); 
    } catch (IllegalAccessException e) {
        e.printStackTrace(); 
    } 
    return -1; 
}
 实际是调用了TelephonyManager().getSimCount()方法,因为该方法是隐藏的方法,所以需要通过反射来获取。
2.判断设备有效的Sim卡数
    public static int getAvailableSimCardCount(Context context){
        int count = 0;
        SubscriptionManager mSubscriptionManager = SubscriptionManager.from(context);
        for(int i = 0; i < getSimCardCount(context); i++){
            SubscriptionInfo sir = mSubscriptionManager
                    .getActiveSubscriptionInfoForSimSlotIndex(i);
            if(sir != null){
                count++;
            }
        }
        return count;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值