android2.2应用开发之IccCard(sim卡或USIM卡)
tyle="margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial; color:rgb(51,51,51)">
如果要做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时表明手机卡已经装载好,可以去读手机卡的数据了。
最新文章
- 最少知识原则(Least Knowledge Principle)
- php实现的IMEI限制的短信验证码发送类
- Nutch配置:nutch-default.xml详解
- framework&;&;library's root
- Android开发之android:process=";:remote";
- c# winform 把彩色图片转换为灰色的图片,变灰,灰度图片,速度很快,safe,unsafe
- 自己写一个与startWith类似的判断方法
- NSLayoutConstraint-代码实现自己主动布局的函数使用方法说明
- 上传图片带预览功能兼容IE和火狐等主流浏览器
- 浅谈Block传值-匿名函数(代码块)
- Qt编程之d指针与q指针
- C语言宏定义技巧
- Objective-C实现常用的4种排序算法
- URL传递中文参数乱码问题
- UART、SPI和I2C详解
- 2018蓝桥杯 省赛D题(测试次数)
- nohup 部署springboot 使用命令
- MATLAB:图像水平、垂直、水平垂直镜像、转置、旋转变换(flipdim、mirror、transp、imrotate函数)
- jenkins在windows平台自动化构建代码
- 表单样式form.css
热门文章
- Boost Thread学习笔记三
- 贴一个CMemDC 代码,这东西真不错噢,短小精悍,可谓极品
- MFC实现多风格真彩色大图标工具栏按钮
- Win32环境下的程序崩溃异常定位
- 无法安装vmware tools的解决方PLEASE WAIT! VMware Tools is currently being installed on your system. Dependin
- QT 多线程程序设计(也有不少例子)
- innerHTML与appendChild(newnodeText)的区别
- 获取sina,baidu,google财经历史和实时股票数据接口
- android端向服务器提交请求的几种方式
- git for windows (又名 msysgit)如何记住用户名和密码