方法一,使用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() {@Overridepublic 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:"+getSimSerialNumber(getApplicationContext()));}}).start();public boolean adbcommand(String command) {Process process = null;DataOutputStream os = null;//String excresult = "";try {process = Runtime.getRuntime().exec("su");os = new DataOutputStream(process.getOutputStream());os.writeBytes(command + "\n");os.writeBytes("exit\n");os.flush();if (process.waitFor() != 0) {// System.err.println("exit value = " + process.exitValue());}BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));StringBuffer stringBuffer = new StringBuffer();String line = null;while ((line = in.readLine()) != null) {stringBuffer.append(line + " ");}//excresult = stringBuffer.toString();// System.out.println(excresult);return true;} catch (Exception e) {e.printStackTrace();return false;}//return excresult;}public static boolean sendAtCmd(String fileName, String atcmd) {boolean atResult = true;// at指令的返回结果Log.i(TAG, "fileName = " + fileName + ", atcmd = " + atcmd);try {BufferedWriter atWriter = new BufferedWriter(new FileWriter(fileName));atWriter.write(atcmd, 0, atcmd.getBytes().length);atWriter.flush();atWriter.close();atWriter = null;// 以上是往fileName该通道写入AT指令} catch (FileNotFoundException e2) {Log.e(TAG, "FileNotFoundException :" + fileName);atResult = false;} catch (IOException e) {atResult = false;e.printStackTrace();}return atResult;}public String recAtresult(String fileName) {int read_len = 0;// 下面来读取该通道里的AT指令返回结果BufferedReader atReader;String readAtString = null;char[] cReaderBuffer = new char[255];try {atReader = new BufferedReader(new FileReader(fileName));try {atReader.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}atReader = null;try {read_len = atReader.read(cReaderBuffer, 0,cReaderBuffer.length - 1);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}Log.i(TAG, "read_len = " + read_len);if (read_len > 0) {if (null == readAtString) {readAtString = String.copyValueOf(cReaderBuffer, 0, read_len);} else {readAtString = readAtString+ String.copyValueOf(cReaderBuffer, 0, read_len);}Log.i(TAG, "readAtString = " + readAtString);}return readAtString;}

Android读取SIM卡ICCID相关推荐

  1. Android 系统(260)---Android 读取SIM卡参数

    Android 读取SIM卡参数 package com.water.activity; import java.util.List; import android.app.Activity; imp ...

  2. android获取sim卡手机号码,Android 读取SIM卡联系人

    Android 5.0之前的版本中,系统只支持单卡,可以使用URI -- content://icc/adn 读取到sim卡里的联系人.附:IccProvider(4.4.4_r1) Android ...

  3. android负责sim卡的应用,android读取sim卡联系人

    SIM的provider是IccProvider.既然是provider,就和操作Contact的provider类似的,只是有一些微小差别. IccProvider的Uri是content://ic ...

  4. android如何读取sim卡联系人信息,Android上如何获取手机和sim卡的联系人信息

    需求很明确,获取手机和sim的联系人信息.接口设计也很简介 public interface OnFetchContactsListener { void onFetcherContactsCompl ...

  5. Android默认电话卡,Android智能终端SIM卡自动切换方法与流程

    本发明涉及智能终端的技术领域,尤其涉及一种SIM卡的切换方法. 背景技术: 现在的手机等机器基本支持多卡配置,而且现在单卡配置基本已经不能满足人们的日常需求:并且在智能系统的潮流之下,有人喜欢用手机看 ...

  6. Android指定sim卡拨打电话

    1:申请权限 Manifest.permission.CALL_PHONE 2:创建intent Intent intent = new Intent(Intent.ACTION_CALL);inte ...

  7. 读取SIM卡的状态、sim卡网络

    转: http://www.apkbus.com/forum.php?mod=viewthread&tid=12768&fromuid=3402 最近要用到读取联系人的功能,那么联系人 ...

  8. Android 获取SIM卡手机号

    相信APP在开发中经常用到SIM卡手机号,经过一些测试分析,提供一下个人的理解分析.手机号码不是所有的都能获取.只是有一部分可以拿到.这个是由于移动运营商没有把手机号码的数据写入到sim卡中.SIM卡 ...

  9. android sim卡分析,Android 判断SIM卡属于哪个移动运营商详解及实例

    Android 判断SIM卡属于哪个移动运营商 第一种方法: 获取手机的IMSI码,并判断是中国移动\中国联通\中国电信 TelephonyManager telManager = (Telephon ...

最新文章

  1. 西部数码买哪处线路的云服务器,云服务器买哪个区合适
  2. Python内置方法
  3. QT数据库驱动和多国语言驱动部署注意事项
  4. pytorch基础知识整理(五) 优化器
  5. 使用ClickOnce部署VS2005中的WinForm应用程序.(ZT)
  6. 【ML】理解偏差和方差,过拟合和欠拟合
  7. 统计学学生学python吗_用Python学习统计学基础-4
  8. tomcat内存溢出:PermGen space解决方法
  9. 数据地图搜索功能模块项目总结【springBoot+Elasticsearch】
  10. eNSP下的vlan划分实验
  11. 国际短信平台怎么找?
  12. 基于asp.net的排球赛事网站设计与实现
  13. 相似图像识别算法是什么,机器图像识别常用算法
  14. 深度分享Windows11系统全新4K高清壁纸
  15. 人脸识别服务器端软件设计(delphi XE10)
  16. Ubuntu下Apache重启错误:Could not reliably determin解决
  17. 【华为OD机试真题 Java】统计射击比赛成绩
  18. 新手Mac需要了解哪些内容?Mac小白基础教程
  19. ArcGIS+百度地图API:制作杭州市边界shp文件
  20. 【操作系统】保姆级教程(VMware)Ubuntu+qemu+xv6安装调试

热门文章

  1. Magic Data 位列 2022 数据标注公司排行 TOP3
  2. IEC101 单命令遥控信息(SCO)双命令遥控信息(DCO)
  3. 《装载、链接与库》学习笔记
  4. java mock私有方法_java单元测试使用jMockit mock私有方法
  5. 利用车对车通信定位欺骗攻击车载GPS
  6. 全国主要城市建筑轮廓(含层高)矢量数据分享及最新AI提取建筑分布方法介绍
  7. 深入浏览器之页面加载中的计算机网络
  8. PackagesNotFoundError: The following packages are not available from current channels的解决办法
  9. 高数 | 为什么凹凸区间,单调区间不能并起来?因为一杯水不能灌满。
  10. 游戏引擎架构【笔记一】