android2.2应用开发之IccCard(sim卡或USIM卡)
如果要做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时表明手机卡已经装载好,可以去读手机卡的数据了。
android2.2应用开发之IccCard(sim卡或USIM卡)相关推荐
- android2.2应用开发之IccCard(sim卡或USIM卡)第一篇
如果要做android通讯录的联系人的机卡混排显示,由于手机卡类型的不同,导致手机卡存储容量以及可以存储信息不同,就要涉及到android去读Icc卡的信息. 一般的sim卡只能存储姓名跟一个电话号码 ...
- 嵌入式设备开发专题《NB-IoT开发,解读SIM卡、USIM卡、UICC卡、eSIM卡的区别》
前言 1)不少客户拿到NB-IoT模组,才发现自己忘记买相应的SIM卡,无法进行相应功能开发 2)不知道买哪种SIM卡,买的SIM卡不适用,或者运营商不匹配,国内基本也就移动入库/电信入库/联通入库 ...
- 物联网开发笔记(96)- Micropython ESP32开发之SPI接口控制Micro SD卡TF卡模块挂载内存卡
一.目的 这一节我们学习如何使用乐鑫的ESP32开发板连接SD卡模块,进行目录.文件的相关操作. 在早前我们也介绍过TFT SD卡的操作,这里我们重新复习一下. 物联网开发笔记(60)- 使用Micr ...
- 如何判断插入的卡是SIM卡还是USIM卡
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1. 判 ...
- 解读SIM卡、USIM卡、UICC卡、eSIM卡的区别
SIM的英文全称是"Subscriber Identity Module",即"用户身份模块".它的主要作用是在移动终端设备与网络通讯时提供身份识别信息及存储数 ...
- SIM卡、USIM卡、UICC卡、eSIM卡的区别
SIM的英文全称是"Subscriber Identity Module",即"用户身份模块".它的主要作用是在移动终端设备与网络通讯时提供身份识别信息及存储数 ...
- 手机卡,SIM卡,USIM 卡,nano卡
1) SIM卡叫"用户识别卡",它实际上是一张内含大规模集成电路的智能卡片,用来登记用户的重要数据和信息.SIM也指社会影响营销. 2) USIM是Universal Subscr ...
- UICC,USIM卡与SIM的区别
USIM卡与SIM的区别 SIM卡(Subscriber Identity Module) ,即用户识别卡,是全球通数字移动电话的一张个人资料卡.它采用A 级加密方法制作,存储着用户的数据.鉴权方法及 ...
- USIM卡与SIM的区别
最近在研究android读取SIM联系人的东东,结果越看越深.怎奈自己才疏学浅,还是想巩固下基础吧! 关于USIM卡和SIM卡,在android系统读取卡信息时加以区分,这里有必要对这些知识加以梳理. ...
最新文章
- UVA1626 括号序列 Brackets sequence(区间DP匹配括号,输出匹配方案)
- Nature子刊:Knight组发布快速UniFrac算法
- 日常开发中常用到哪些设计模式
- 网上学python靠谱吗-0基础自学Python靠谱吗?如何快速学会?
- response的content-type以及详细列表
- css3加载ing动画
- Yii2 的快速配置 api 服务 yii2-fast-api
- Nginx—— Rewrite规则的使用
- python导入文件列行_python读写csv文件并增加行列的实例代码
- QT学习笔记(四):Qt5+MSVC编译 中文字符显示乱码问题解决
- hdu2457:DNA repair
- javascript window.navigator
- centos安装python3.6.3、pip_Centos 7安装python3和pip
- python实现多智能体一致性_多智能体深度学习算法MADDPG的PARL实践
- python3.7下载 numpy
- Error: unable to open database “BookStore.db“: unable to open database file的解决方法
- 三阶魔方层先法自动复原_Python
- 树莓派自定义游戏,Minecraft硬件编程,建造房屋,我的世界还可以这样玩
- linux 32 telnet 工具,Telnet/SSH/SSH2终端工具(Zoc terminal)
- 打包chromium浏览器