Android读取SIM卡ICCID

本文介绍了在Android中读取SIM卡ICCID的两种方式:一是利用TelephonyManager的getSimSerialNumber()方法,但需要添加READ_PHONE_STATE权限;二是通过发送AT命令直接读取,该方法能解决部分SIM卡ICCID长度不正确的问题。
摘要由CSDN通过智能技术生成

方法一,使用TelephonyManager的getSimSerialNumber()获取

TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(TELEPHONY_SERVICE);
String iccid = telephonyManager.getSimSerialNumber()

需要添加权限:<uses-permission android:name="android.permission.READ_PHONE_STATE" />

方法二,通过发AT命令读取SIM卡ICCID(可以解决读取某些SIM卡ICCID长度不对的问题)

		new Thread(new Runnable() {
            @Override
            public void run() {
            	String com = "/dev/ttyUSB2";
            	String cmd = "at+qccid\r\n";
            	if(adbcommand("chmod 0777 "+com) && sendAtCmd(com,cmd)){
            		iccidtv.setText("ICCID:"+recAtresult(com));
            	}
            	iccidtv.setText("ICCID:"+recAtresult(com));
            	//iccidtv.setText("ICCID:"+get
Android中获取双SIM卡信息需要使用TelephonyManager类和SubscriptionManager类。 首先,你需要在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:name="android.permission.READ_PHONE_STATE" /> ``` 然后,在你的Java代码中,你可以使用以下代码获取双SIM卡信息: ```java // 获取系统的TelephonyManager和SubscriptionManager TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); SubscriptionManager subscriptionManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); // 获取当前活动的SIM卡数量 int activeSimCount = telephonyManager.getActiveModemCount(); // 遍历所有的SIM卡信息 for (int i = 0; i < activeSimCount; i++) { SubscriptionInfo subscriptionInfo = subscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(i); if (subscriptionInfo != null) { // 获取SIM卡的详细信息 int subscriptionId = subscriptionInfo.getSubscriptionId(); String carrierName = subscriptionInfo.getCarrierName().toString(); String countryIso = subscriptionInfo.getCountryIso().toString(); String displayName = subscriptionInfo.getDisplayName().toString(); String iccId = subscriptionInfo.getIccId().toString(); String number = subscriptionInfo.getNumber().toString(); int mcc = subscriptionInfo.getMcc(); int mnc = subscriptionInfo.getMnc(); int simSlotIndex = subscriptionInfo.getSimSlotIndex(); int subscriptionType = subscriptionInfo.getSubscriptionType(); boolean isEmbedded = subscriptionInfo.isEmbedded(); // 在此处处理SIM卡信息 } } ``` 注意:上述代码需要在Android 5.1及以上版本中运行。在Android 5.1以下版本中获取双SIM卡信息的方法与上述代码略有不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值