//第一步 先加入权限,在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