如果要做android通讯录的联系人的机卡混排显示,由于手机卡类型的不同,导致手机卡存储容量以及可以存储信息不同,就要涉及到android去读Icc卡的信息。

一般的sim卡只能存储姓名跟一个电话号码,而USIM卡还可以存多个电话号码跟邮箱,所以编辑卡上联系人的时候应该动态的去布局,或者应用可以去写死,让USIM卡的存储信息与SIM卡一致。

由于本人是在源码上开发的,用SDK开发的朋友有些类或方法以及属性可能引用不到,这是由于用的谷歌没有公开的API导致,望大家不要莫名其妙。

1、读取ICC卡的类型:

由于我只需要去区分sim和USIM,所以返回的不是USIM的我都视为sim,这个大家可以根据需要自己去改。

import android.os.SystemProperties;

public  String getSimType(){
         if (SystemProperties.get("gsm.sim.card.type", "SIM").contentEquals ("USIM")){
             return "USIM";
         }else{
             return "SIM";
         }
    }

2 、是否有ICC卡:

import android.telephony.TelephonyManager;

boolean hasIcc = ((TelephonyManager) getSystemService

(Context.TELEPHONY_SERVICE)).hasIccCard();

3、何时导手机卡上的联系人既sim卡联系人导入的时机:

一般大家会想到开机就导呗,接收boot_completed的消息然后启动一个service去导,那我这里告诉大家一个系统发的广播,比boot_completed时间发出的更早些。

注意:这个广播只有插入手机卡的情况下才会去播出,没有插卡式不会播出去的。

import com.android.internal.telephony.IccCard;
import com.android.internal.telephony.TelephonyIntents;

public void onReceive(Context con, Intent intent) { Log.i(TAG,"receive"); if(intent.getAction().equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)){ Log.i(TAG,"SIM_STATE_CHANGED"+intent.getStringExtra(IccCard.INTENT_KEY_ICC_STATE)); if(intent.getStringExtra(IccCard.INTENT_KEY_ICC_STATE).equals(IccCard.INTENT_VALUE_ICC_LOADED)){ Log.i(TAG,"READY to start service"); Intent i = new Intent(con,SimContactsService.class); i.putExtra("ICC_LOADED", "READY"); con.startService(i); } } }

对,这个广播即TelephonyIntents.ACTION_SIM_STATE_CHANGED,字符串是:"android.intent.action.SIM_STATE_CHANGED",系统在发这个action广播的时候会在intent里附加一个IccCard.INTENT_KEY_ICC_STATE的数据,说到这里大家应该知道IccCard会有好几种状态,具体多少大家可以去查源码,我这里当状态为IccCard.INTENT_VALUE_ICC_LOADED时表明手机卡已经装载好,可以去读手机卡的数据了。

先写到这里吧,下一篇说下是如何去导sim卡联系人的。

android2.2应用开发之IccCard(sim卡或USIM卡)第一篇相关推荐

  1. android2.2应用开发之IccCard(sim卡或USIM卡)

    如果要做android通讯录的联系人的机卡混排显示,由于手机卡类型的不同,导致手机卡存储容量以及可以存储信息不同,就要涉及到android去读Icc卡的信息. 一般的sim卡只能存储姓名跟一个电话号码 ...

  2. 嵌入式设备开发专题《NB-IoT开发,解读SIM卡、USIM卡、UICC卡、eSIM卡的区别》

    前言 1)不少客户拿到NB-IoT模组,才发现自己忘记买相应的SIM卡,无法进行相应功能开发 2)不知道买哪种SIM卡,买的SIM卡不适用,或者运营商不匹配,国内基本也就移动入库/电信入库/联通入库 ...

  3. 物联网开发笔记(96)- Micropython ESP32开发之SPI接口控制Micro SD卡TF卡模块挂载内存卡

    一.目的 这一节我们学习如何使用乐鑫的ESP32开发板连接SD卡模块,进行目录.文件的相关操作. 在早前我们也介绍过TFT SD卡的操作,这里我们重新复习一下. 物联网开发笔记(60)- 使用Micr ...

  4. 如何判断插入的卡是SIM卡还是USIM卡

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1. 判 ...

  5. 解读SIM卡、USIM卡、UICC卡、eSIM卡的区别

    SIM的英文全称是"Subscriber Identity Module",即"用户身份模块".它的主要作用是在移动终端设备与网络通讯时提供身份识别信息及存储数 ...

  6. SIM卡、USIM卡、UICC卡、eSIM卡的区别

    SIM的英文全称是"Subscriber Identity Module",即"用户身份模块".它的主要作用是在移动终端设备与网络通讯时提供身份识别信息及存储数 ...

  7. 手机卡,SIM卡,USIM 卡,nano卡

    1) SIM卡叫"用户识别卡",它实际上是一张内含大规模集成电路的智能卡片,用来登记用户的重要数据和信息.SIM也指社会影响营销. 2) USIM是Universal Subscr ...

  8. UICC,USIM卡与SIM的区别

    USIM卡与SIM的区别 SIM卡(Subscriber Identity Module) ,即用户识别卡,是全球通数字移动电话的一张个人资料卡.它采用A 级加密方法制作,存储着用户的数据.鉴权方法及 ...

  9. USIM卡与SIM的区别

    最近在研究android读取SIM联系人的东东,结果越看越深.怎奈自己才疏学浅,还是想巩固下基础吧! 关于USIM卡和SIM卡,在android系统读取卡信息时加以区分,这里有必要对这些知识加以梳理. ...

最新文章

  1. 全程pwm调光_dc调光的手机有哪些
  2. 平民软件OneProxy的强大
  3. matlab练习程序(自适应中值滤波RAMF)
  4. Python闭包与延迟绑定
  5. 内部服务并行调用_25行以下代码中的并行SOAP调用的Express服务
  6. 外媒:华为或将在2月24日发布麒麟820 支持5G网络
  7. 艾伟_转载:.NET设计模式:工厂方法模式(Factory Method)
  8. 【Proteus仿真8086】定时器8253产生波形发生器
  9. 题解【51nod 1290 Counting Diff Pairs】
  10. React使用jsbarcode条形码插件
  11. c语言全局变量6,C语言全局变量定义方法
  12. 游戏的帧率与屏幕的刷新率
  13. source insight的查找功能
  14. 【数据集显示标注】VOC文件结构+数据集标注可视化+代码实现
  15. ARM9的存储结构~~大端存储和小端存储
  16. 网络统考计算机应用基础ppt视频,计算机应用基础课程网络统考辅导.ppt
  17. micro:bit 了解
  18. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)
  19. ai若无声,我宁沉默夜寂无声,伊人浅唱。
  20. c#2012开发安卓软件_2012年重要的软件开发发展

热门文章

  1. 记一次阴阳师挂机脚本开发
  2. 静态HTML网页设计作品 仿唯品会购物商城(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 商城网站设计
  3. HTTPS证书文件格式转换
  4. go语言求时间的差值(按天数算)
  5. Python pass 语句
  6. vue3安装vuex报错: Could not resolve dependency npm ERR peer vue@“^2.0.0“ from vuex@3.6.2
  7. 163个人邮箱如何注册申请?vip邮箱有哪些优点?
  8. 百家争鸣的低代码平台
  9. Mac如何录屏 同时录内置声音
  10. s>/<s>.css?12345‘“\‘\“);|]*%00{%0d%0a<%00>%bf%2项目检测问题Application error message