83.android 简单的获取手机SIM卡卡槽数量,当前SIM卡数量。

导读:本篇文章讲解 83.android 简单的获取手机SIM卡卡槽数量,当前SIM卡数量。,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

//第一步 先加入权限,在AndroidManifest.xml里加入:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

//动态权限申请:

//权限初始化
private int READ_PHONE_STATE = 1;
private String[] CALLS_STATE = {
        Manifest.permission.READ_PHONE_STATE,
        Manifest.permission.WRITE_EXTERNAL_STORAGE,
        Manifest.permission.RECORD_AUDIO,
};
/*
 * 方法名:verifyStoragePermissions(Activity activity)
 * 功    能:6.0动态权限
 * 参    数:Activity activity
 * 返回值:无
 */
public void verifyStoragePermissions(Activity activity) {
    int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.READ_PHONE_STATE);
    if (permission != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(activity, CALLS_STATE, READ_PHONE_STATE);
    }
}

//在Activity里调用:

verifyStoragePermissions(this);//调用请求6.0权限的方法

//好了 权限申请完成后开始获取SIM卡槽数量,可用SIM卡数量:

@TargetApi(Build.VERSION_CODES.M)
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP_MR1)
private void JudgeSIM() {
    TelephonyManager tm = (TelephonyManager)getContext().getSystemService(TELEPHONY_SERVICE);
    int phoneCount = tm.getPhoneCount(); //获取当前SIM卡槽数量
    //获取当前SIM卡数量
    int activeSubscriptionInfoCount = SubscriptionManager.from(getContext()).getActiveSubscriptionInfoCount();
    Toast.makeText(getContext(), "卡槽数量:"+phoneCount, Toast.LENGTH_SHORT).show();
    Toast.makeText(getContext(), "当前SIM卡数量:"+activeSubscriptionInfoCount, Toast.LENGTH_SHORT).show();
}

sim卡信息工具类:

/**
 * 获取sim卡信息
 *
 * @author CJF
 */
public class SimCardUtil {
    @SuppressLint("StaticFieldLeak")
    private volatile static SimCardUtil simCardUtil = null;
    private final String TAG = "SimCardUtil";

    public static SimCardUtil getInstance() {
        if (null == simCardUtil) {
            synchronized (SimCardUtil.class) {
                if (null == simCardUtil) {
                    simCardUtil = new SimCardUtil();
                }
            }
        }
        return simCardUtil;
    }

    /**
     * 获取sim卡信息
     */
    public List<SubscriptionInfo> getCallingSimCard() {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {
            SubscriptionManager mSubscriptionManager = SubscriptionManager.from(context);
            if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
                return new ArrayList<>();
            }
            List<SubscriptionInfo> list = mSubscriptionManager.getActiveSubscriptionInfoList();

            for (SubscriptionInfo info : list) {
                String iccId = info.getIccId();
                Log.d(TAG, " iccId:" + iccId);
                Log.d(TAG, " info:" + info.toString());
            }
            return list;
        }
        return new ArrayList<>();
    }


    /**
     * 获取当前sim卡数量
     *
     * @return
     */
    public int getSimCardCount() {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {
            SubscriptionManager from = SubscriptionManager.from(context);
            //获取当前SIM卡数量
            if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
                return 0;
            }
            int activeSubscriptionInfoCount = from.getActiveSubscriptionInfoCount();

            Log.d(TAG, "当前SIM卡数量:" + activeSubscriptionInfoCount);
            return activeSubscriptionInfoCount;
        }
        return 0;
    }

    /**
     * 是否双卡
     *
     * @return 双卡true 不是双卡false
     */
    public boolean isTwoSimCards() {
        return getSimCardCount() == 2;
    }

    /**
     * 手机是否有sim卡存在
     *
     * @return 不存在true 存在false
     */
    public boolean isSimCardsExists() {
        return getSimCardCount() == 0;
    }

    /**
     * sim卡1是否存在
     *
     * @return true存在  false不存在
     */
    public boolean isSim1CardExist() {
        if (isSimCardsExists()) {
            return false;
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
            List<SubscriptionInfo> infoList = getCallingSimCard();
            for (SubscriptionInfo info : infoList) {
                if (info.getSimSlotIndex() == 0) {
                    return true;
                }
            }
        }
        return false;
    }

    /**
     * sim卡2是否存在
     *
     * @return true存在  false不存在
     */
    public boolean isSim2CardExist() {
        if (isSimCardsExists()) {
            return false;
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
            List<SubscriptionInfo> infoList = getCallingSimCard();
            for (SubscriptionInfo info : infoList) {
                if (info.getSimSlotIndex() == 1) {
                    return true;
                }
            }
        }
        return false;
    }

    /**
     * 获取sim1运营商名称
     *
     * @return
     */
    public String getSim1CarrierName() {
        if (isSimCardsExists()) {
            return null;
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
            List<SubscriptionInfo> infoList = getCallingSimCard();
            for (SubscriptionInfo info : infoList) {
                if (info.getSimSlotIndex() == 0) {
                    return info.getCarrierName().toString();
                }
            }
        }
        return null;
    }


    /**
     * 获取sim2运营商名称
     *
     * @return
     */
    public String getSim2CarrierName() {
        if (isSimCardsExists()) {
            return null;
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
            List<SubscriptionInfo> infoList = getCallingSimCard();
            for (SubscriptionInfo info : infoList) {
                if (info.getSimSlotIndex() == 1) {
                    return info.getCarrierName().toString();
                }
            }
        }
        return null;
    }


    /**
     * 获取指定sim卡订阅Id
     *
     * @param slotId sim卡
     * @return subscriptionId
     */
    public int getSimSubscriptionId(int slotId) {
        if (isSimCardsExists()) {
            return 0;
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
            List<SubscriptionInfo> infoList = getCallingSimCard();
            for (SubscriptionInfo info : infoList) {
                if (info.getSimSlotIndex() == slotId) {
                    return info.getSubscriptionId();
                }
            }
        }
        return 0;
    }

    /**
     * 获取当前传递的iccid是属于哪张sim卡
     *
     * @param iccId
     */
    public int getSimSlotIndex(String iccId) {
        if (null == iccId) {
            return 0;
        }
        if (iccId.length() == 1) {
            return Integer.parseInt(iccId);
        }
        if (isSimCardsExists()) {
            return 0;
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
            List<SubscriptionInfo> infoList = getCallingSimCard();
            for (SubscriptionInfo info : infoList) {
                if (iccId.equals(info.getIccId())) {
                    return info.getSimSlotIndex();
                }
            }
        }
        return 0;
    }

    /**
     * 获取sim卡对应的iccid
     *
     * @return
     */
    public String getSimIccid(int slotId) {
        if (isSimCardsExists()) {
            return "";
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
            List<SubscriptionInfo> infoList = getCallingSimCard();
            for (SubscriptionInfo info : infoList) {
                if (info.getSimSlotIndex() == slotId) {
                    return info.getIccId();
                }
            }
        }
        return "";
    }

}

 

//——————————————————————–完————————————————————————————–

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118311.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!