Android 判断有效的Sim card数

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;
    }


你可能感兴趣的:(技术笔记)