Android读取SIM卡ICCID
方法一,使用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相关推荐
- Android 系统(260)---Android 读取SIM卡参数
Android 读取SIM卡参数 package com.water.activity; import java.util.List; import android.app.Activity; imp ...
- android获取sim卡手机号码,Android 读取SIM卡联系人
Android 5.0之前的版本中,系统只支持单卡,可以使用URI -- content://icc/adn 读取到sim卡里的联系人.附:IccProvider(4.4.4_r1) Android ...
- android负责sim卡的应用,android读取sim卡联系人
SIM的provider是IccProvider.既然是provider,就和操作Contact的provider类似的,只是有一些微小差别. IccProvider的Uri是content://ic ...
- android如何读取sim卡联系人信息,Android上如何获取手机和sim卡的联系人信息
需求很明确,获取手机和sim的联系人信息.接口设计也很简介 public interface OnFetchContactsListener { void onFetcherContactsCompl ...
- Android默认电话卡,Android智能终端SIM卡自动切换方法与流程
本发明涉及智能终端的技术领域,尤其涉及一种SIM卡的切换方法. 背景技术: 现在的手机等机器基本支持多卡配置,而且现在单卡配置基本已经不能满足人们的日常需求:并且在智能系统的潮流之下,有人喜欢用手机看 ...
- Android指定sim卡拨打电话
1:申请权限 Manifest.permission.CALL_PHONE 2:创建intent Intent intent = new Intent(Intent.ACTION_CALL);inte ...
- 读取SIM卡的状态、sim卡网络
转: http://www.apkbus.com/forum.php?mod=viewthread&tid=12768&fromuid=3402 最近要用到读取联系人的功能,那么联系人 ...
- Android 获取SIM卡手机号
相信APP在开发中经常用到SIM卡手机号,经过一些测试分析,提供一下个人的理解分析.手机号码不是所有的都能获取.只是有一部分可以拿到.这个是由于移动运营商没有把手机号码的数据写入到sim卡中.SIM卡 ...
- android sim卡分析,Android 判断SIM卡属于哪个移动运营商详解及实例
Android 判断SIM卡属于哪个移动运营商 第一种方法: 获取手机的IMSI码,并判断是中国移动\中国联通\中国电信 TelephonyManager telManager = (Telephon ...
最新文章
- 西部数码买哪处线路的云服务器,云服务器买哪个区合适
- Python内置方法
- QT数据库驱动和多国语言驱动部署注意事项
- pytorch基础知识整理(五) 优化器
- 使用ClickOnce部署VS2005中的WinForm应用程序.(ZT)
- 【ML】理解偏差和方差,过拟合和欠拟合
- 统计学学生学python吗_用Python学习统计学基础-4
- tomcat内存溢出:PermGen space解决方法
- 数据地图搜索功能模块项目总结【springBoot+Elasticsearch】
- eNSP下的vlan划分实验
- 国际短信平台怎么找?
- 基于asp.net的排球赛事网站设计与实现
- 相似图像识别算法是什么,机器图像识别常用算法
- 深度分享Windows11系统全新4K高清壁纸
- 人脸识别服务器端软件设计(delphi XE10)
- Ubuntu下Apache重启错误:Could not reliably determin解决
- 【华为OD机试真题 Java】统计射击比赛成绩
- 新手Mac需要了解哪些内容?Mac小白基础教程
- ArcGIS+百度地图API:制作杭州市边界shp文件
- 【操作系统】保姆级教程(VMware)Ubuntu+qemu+xv6安装调试
热门文章
- Magic Data 位列 2022 数据标注公司排行 TOP3
- IEC101 单命令遥控信息(SCO)双命令遥控信息(DCO)
- 《装载、链接与库》学习笔记
- java mock私有方法_java单元测试使用jMockit mock私有方法
- 利用车对车通信定位欺骗攻击车载GPS
- 全国主要城市建筑轮廓(含层高)矢量数据分享及最新AI提取建筑分布方法介绍
- 深入浏览器之页面加载中的计算机网络
- PackagesNotFoundError: The following packages are not available from current channels的解决办法
- 高数 | 为什么凹凸区间,单调区间不能并起来?因为一杯水不能灌满。
- 游戏引擎架构【笔记一】