83.android 简单的获取手机SIM卡卡槽数量,当前SIM卡数量。
//第一步 先加入权限,在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 "";}}
//--------------------------------------------------------------------完--------------------------------------------------------------------------------------
83.android 简单的获取手机SIM卡卡槽数量,当前SIM卡数量。相关推荐
- 在Android中快速获取手机的高级权限
在Android中快速获取手机的高级权限 想要快速获取Android手机的ROOT权限吗?也许因为ROOT教程太复杂,也许因为不会进工程模式,让我们在使用Android手机时感觉像是开别人的车一样,总 ...
- Android开发之获取手机SIM卡信息
TelephonyManager是一个管理手机通话状态.电话网络信息的服务类,该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于访问有关设 ...
- android如何读取sim卡联系人信息,Android上如何获取手机和sim卡的联系人信息
需求很明确,获取手机和sim的联系人信息.接口设计也很简介 public interface OnFetchContactsListener { void onFetcherContactsCompl ...
- android 安卓APP获取手机设备信息和手机号码的代码示例
下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓手机.手机SIM卡确保插入手机里.eclipse ADT和android-sdk开发环境 第一步:新建一个andro ...
- android app 手机号码,android 安卓APP获取手机设备信息和手机号码的代码示例 .
下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓手机.手机SIM卡确保插入手机里.eclipse ADT和android-sdk开发环境 第一步:新建一个andro ...
- android app 手机号码,android 安卓APP获取手机设备信息和手机号码的代码示例
下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓手机.手机SIM卡确保插入手机里.eclipse ADT和android-sdk开发环境 第一步:新建一个andro ...
- android 6.0获取手机imei,android获取手机信息大全,android获取大全,IMEI号,IESI号,...
android获取手机信息大全,android获取大全,IMEI号,IESI号, IMEI号,IESI号,手机型号: [java] view plaincopyprint?private void g ...
- Android初级教程获取手机系统联系人信息
在手机内部,对联系人信息存在对应的数据库.我们创建的而联系人信息都存在这张表中.如下是对数据库的截图,我已经对表和应该注意的地方做了红笔标注: 好了,现在可以根据数据库里面的数据来写代码了. 代码如下 ...
- 信号强度 android,一种获取手机信号强度的方法
出于项目需求,需要获取到手机信号强度.本人不才,以前都是采用toString()的方法,然后截取,得到强度,但发现很多机型都不适合.苦苦在API中搜寻,结果都不是很理想.最后在Stackoverflo ...
最新文章
- 2021-06-04
- javascript模式——Mixin
- 使用java代码发送zip文件到邮箱_Azkaban安装与使用(下)
- bzoj3202:[Sdoi2013]项链
- Alibaba分层领域模型规约
- bzoj3998 [TJOI2015]弦论
- 云痕大数据 家长登录_智学网家长学生查分入口:www.zhixue.com
- log4j配置文件,日志文件的模板
- mysql如何进行宿舍分配_手把手教你做一个Jsp Servlet Mysql实现的学生宿舍管理系统...
- 好用到叫出声!强烈推荐 10 款 Mac 软件!
- “传递关爱 感恩社会” ——美斯坦福2017年捐资助学仪式隆重举行
- 典型企业设备链路冗余备份方案
- 关于六度分割理论的一点认识
- AE新手基础入门教程50套从新手到高手
- FreeBSD常用命令110条
- TDSQL PG 版企业级分布式数据库技术创新实践
- 你还在问我Bean的生命周期?带你看看一个Spring Bean从诞生到逝去的九次人生转折!
- 你还在担心你的 IP 被封吗?
- 东大916计算机网络分析题复习总结
- 模态指令和非模态指令