- 浏览: 110869 次
- 性别:
- 来自: 北京
最新评论
-
饭更稀:
饭更稀 写道楼主这里写错了吧,第一部分:高16位表示MODE, ...
android绘制view的过程之一---------计算view大小(measure)(转) -
饭更稀:
楼主这里写错了吧,第一部分:高16位表示MODE,不应该是高3 ...
android绘制view的过程之一---------计算view大小(measure)(转) -
hovei:
...
http协议 -
liufang205:
...
http协议
如何读取SIM卡信息
- 博客分类:
- android 开发
TelephonyManager的应用
手机的最主要功用就是打电话,如果没有电信公司提供的SIM卡,就不能正常地拨打电话,那么,我们有什么方法可以取得SIM卡的状态及相关资料呢?
Android API中的TelephonyManager(Android.telephony.TelephonyManager)对象,提供了几个方法可以快速取得SIM卡的状态及相关信息。
效果图:
程序中以getSystemService(TELEPHONY_SERVICE)来取得TelephonyManager对象,以TelephonyManager提供的方法来取得SIM卡状态及相关信息,将取得的信息存入自定义的MyAdapter中,最后以setListAdapter()将MyAdpter内的信息显示于ListView中。
Java代码:
01.import android.telephony.TelephonyManager;
02.
03.public class EX05_18 extends ListActivity {
04.private TelephonyManager telMgr;
05.private List<String> item=new ArrayList<String>();
06.private List<String> value=new ArrayList<String>();
07.
08.@SuppressWarnings("static-access")
09.@Override
10.public void onCreate(Bundle savedInstanceState) {
11.super.onCreate(savedInstanceState);
12./* 载入main.xml Layout */
13.setContentView(R.layout.main);
14.telMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
15./* 将取得的信息写入List中 */
16./* 取得SIM卡状态 */
17.item.add(getResources().getText(R.string.str_list0).toString());
18.if(telMgr.getSimState()==telMgr.SIM_STATE_READY) {
19.value.add("良好");
20.} else if(telMgr.getSimState()==telMgr.SIM_STATE_ABSENT) {
21.value.add("无SIM卡");
22.} else {
23.value.add("SIM卡被锁定或未知的状态");
24.}
25./* 取得SIM卡卡号 */
26.item.add(getResources().getText(R.string.str_list1).toString());
27.if(telMgr.getSimSerialNumber()!=null) {
28.value.add(telMgr.getSimSerialNumber());
29.} else {
30.value.add("无法取得");
31.}
32./* 取得SIM卡供货商代码 */
33.item.add(getResources().getText(R.string.str_list2).toString());
34.if(telMgr.getSimOperator().equals("")) {
35.value.add("无法取得");
36.} else {
37.value.add(telMgr.getSimOperator());
38.}
39./* 取得SIM卡供货商名称 */
40.item.add(getResources().getText(R.string.str_list3).toString());
41.if(telMgr.getSimOperatorName().equals("")) {
42.value.add("无法取得");
43.} else {
44.value.add(telMgr.getSimOperatorName());
45.}
46./* 取得SIM卡国别 */
47.item.add(getResources().getText(R.string.str_list4).toString());
48.if(telMgr.getSimCountryIso().equals("")) {
49.value.add("无法取得");
50.} else {
51.value.add(telMgr.getSimCountryIso());
52.}
53./* 使用自定义的MyAdapter来将数据传入ListActivity */
54.setListAdapter(new MyAdapter(this,item,value));
55.}
56.
57.}
复制代码
自定义的Adapter对象,以row_layout.xml作为Layout,程序中依照Layout的设置值来显示信息名称及信息内容。
Java代码:
01./* 自定义的Adapter,继承android.widget.BaseAdapter */
02.public class MyAdapter extends BaseAdapter {
03./* 变量声明 */
04.private LayoutInflater mInflater;
05.private List<String> items;
06.private List<String> values;
07./* MyAdapter的构造器,传入三个参数 */
08.public MyAdapter(Context context,List<String> item, List<String> value) {
09./* 参数初始化 */
10.mInflater = LayoutInflater.from(context);
11.itemitems = item;
12.valuevalues = value;
13.}
14./* 因继承BaseAdapter,需重写以下方法 */
15.@Override
16.public int getCount() {
17.return items.size();
18.}
19.
20.@Override
21.public Object getItem(int position) {
22.return items.get(position);
23.}
24.@Override
25.public long getItemId(int position) {
26.return position;
27.}
28.@Override
29.public View getView(int position,View convertView,ViewGroup par) {
30.ViewHolder holder;
31.if(convertView == null) {
32./* 使用自定义的file_row作为Layout */
33.convertView = mInflater.inflate(R.layout.row_layout,null);
34./* 初始化holder的text与icon */
35.holder = new ViewHolder();
36.holder.text1=(TextView)convertView.findViewById(R.id.myText1);
37.holder.text2=(TextView)convertView.findViewById(R.id.myText2);
38.convertView.setTag(holder);
39.} else {
40.holder = (ViewHolder) convertView.getTag();
41.}
42./* 设置要显示的信息 */
43.holder.text1.setText(items.get(position).toString());
44.holder.text2.setText(values.get(position).toString());
45.return convertView;
46.}
47./* class ViewHolder */
48.private class ViewHolder {
49./* text1:信息名称 * text2:信息内容 */
50.TextView text1;
51.TextView text2;
52.}
53.
54.}
复制代码
AndroidManifest.xml
AndroidManifest.xml本身必须要在Activity里设置读取电话状态的权限(Android.permission.READ_ PHONE_STATE)。
Java代码:
01.<uses-permission android:name="android.permission.READ_PHONE_STATE">
复制代码
在取得SIM卡的相关信息时,有时会因某些情况而取不到值。例如,手机没有插入SIM卡,这时候的返回值可能为null或空白字符串,所以在程序中添加空白与null的检查会是比较保险的做法,以免因此造成系统错误。
程序以TelephonyManager.getSimState()来取得SIM卡的状态,可能出现的返回状态如表
手机的最主要功用就是打电话,如果没有电信公司提供的SIM卡,就不能正常地拨打电话,那么,我们有什么方法可以取得SIM卡的状态及相关资料呢?
Android API中的TelephonyManager(Android.telephony.TelephonyManager)对象,提供了几个方法可以快速取得SIM卡的状态及相关信息。
效果图:
程序中以getSystemService(TELEPHONY_SERVICE)来取得TelephonyManager对象,以TelephonyManager提供的方法来取得SIM卡状态及相关信息,将取得的信息存入自定义的MyAdapter中,最后以setListAdapter()将MyAdpter内的信息显示于ListView中。
Java代码:
01.import android.telephony.TelephonyManager;
02.
03.public class EX05_18 extends ListActivity {
04.private TelephonyManager telMgr;
05.private List<String> item=new ArrayList<String>();
06.private List<String> value=new ArrayList<String>();
07.
08.@SuppressWarnings("static-access")
09.@Override
10.public void onCreate(Bundle savedInstanceState) {
11.super.onCreate(savedInstanceState);
12./* 载入main.xml Layout */
13.setContentView(R.layout.main);
14.telMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
15./* 将取得的信息写入List中 */
16./* 取得SIM卡状态 */
17.item.add(getResources().getText(R.string.str_list0).toString());
18.if(telMgr.getSimState()==telMgr.SIM_STATE_READY) {
19.value.add("良好");
20.} else if(telMgr.getSimState()==telMgr.SIM_STATE_ABSENT) {
21.value.add("无SIM卡");
22.} else {
23.value.add("SIM卡被锁定或未知的状态");
24.}
25./* 取得SIM卡卡号 */
26.item.add(getResources().getText(R.string.str_list1).toString());
27.if(telMgr.getSimSerialNumber()!=null) {
28.value.add(telMgr.getSimSerialNumber());
29.} else {
30.value.add("无法取得");
31.}
32./* 取得SIM卡供货商代码 */
33.item.add(getResources().getText(R.string.str_list2).toString());
34.if(telMgr.getSimOperator().equals("")) {
35.value.add("无法取得");
36.} else {
37.value.add(telMgr.getSimOperator());
38.}
39./* 取得SIM卡供货商名称 */
40.item.add(getResources().getText(R.string.str_list3).toString());
41.if(telMgr.getSimOperatorName().equals("")) {
42.value.add("无法取得");
43.} else {
44.value.add(telMgr.getSimOperatorName());
45.}
46./* 取得SIM卡国别 */
47.item.add(getResources().getText(R.string.str_list4).toString());
48.if(telMgr.getSimCountryIso().equals("")) {
49.value.add("无法取得");
50.} else {
51.value.add(telMgr.getSimCountryIso());
52.}
53./* 使用自定义的MyAdapter来将数据传入ListActivity */
54.setListAdapter(new MyAdapter(this,item,value));
55.}
56.
57.}
复制代码
自定义的Adapter对象,以row_layout.xml作为Layout,程序中依照Layout的设置值来显示信息名称及信息内容。
Java代码:
01./* 自定义的Adapter,继承android.widget.BaseAdapter */
02.public class MyAdapter extends BaseAdapter {
03./* 变量声明 */
04.private LayoutInflater mInflater;
05.private List<String> items;
06.private List<String> values;
07./* MyAdapter的构造器,传入三个参数 */
08.public MyAdapter(Context context,List<String> item, List<String> value) {
09./* 参数初始化 */
10.mInflater = LayoutInflater.from(context);
11.itemitems = item;
12.valuevalues = value;
13.}
14./* 因继承BaseAdapter,需重写以下方法 */
15.@Override
16.public int getCount() {
17.return items.size();
18.}
19.
20.@Override
21.public Object getItem(int position) {
22.return items.get(position);
23.}
24.@Override
25.public long getItemId(int position) {
26.return position;
27.}
28.@Override
29.public View getView(int position,View convertView,ViewGroup par) {
30.ViewHolder holder;
31.if(convertView == null) {
32./* 使用自定义的file_row作为Layout */
33.convertView = mInflater.inflate(R.layout.row_layout,null);
34./* 初始化holder的text与icon */
35.holder = new ViewHolder();
36.holder.text1=(TextView)convertView.findViewById(R.id.myText1);
37.holder.text2=(TextView)convertView.findViewById(R.id.myText2);
38.convertView.setTag(holder);
39.} else {
40.holder = (ViewHolder) convertView.getTag();
41.}
42./* 设置要显示的信息 */
43.holder.text1.setText(items.get(position).toString());
44.holder.text2.setText(values.get(position).toString());
45.return convertView;
46.}
47./* class ViewHolder */
48.private class ViewHolder {
49./* text1:信息名称 * text2:信息内容 */
50.TextView text1;
51.TextView text2;
52.}
53.
54.}
复制代码
AndroidManifest.xml
AndroidManifest.xml本身必须要在Activity里设置读取电话状态的权限(Android.permission.READ_ PHONE_STATE)。
Java代码:
01.<uses-permission android:name="android.permission.READ_PHONE_STATE">
复制代码
在取得SIM卡的相关信息时,有时会因某些情况而取不到值。例如,手机没有插入SIM卡,这时候的返回值可能为null或空白字符串,所以在程序中添加空白与null的检查会是比较保险的做法,以免因此造成系统错误。
程序以TelephonyManager.getSimState()来取得SIM卡的状态,可能出现的返回状态如表
发表评论
-
android绘制view的过程之一---------计算view大小(measure)(转)
2013-01-16 11:40 34020http://www.eoeandroid.com/forum ... -
[转]Android开发学习笔记:数据存取之SQLite浅析
2012-11-28 10:58 991一.SQLite的介绍 1.SQLite ... -
android 背景改变
2012-07-20 14:35 1064一:在xml里面设置 <?xml version=&qu ... -
转 android view构造函数研究
2012-07-16 13:37 2389上周遇到了SurfaceView的constructor的问题 ... -
ImageView 上显示文字
2012-07-16 09:59 1369@Override protected void onDra ... -
继承ImageView 实现了多点触碰的拖动和缩放
2012-07-16 09:58 995public class TouchView extends ... -
android中ansycTask的用法
2012-06-11 17:09 1777在开发Android应用时必须遵守单线程模型的原则: Andr ... -
Android 使用AsyncTask 后监听异步加载完毕的动作
2012-06-11 17:07 1286AsyncTask 的使用方法网上有很多例子,使用起来也非常的 ... -
android九宫格
2012-06-11 10:31 11241:打开android-sdk文件夹下的tool工具中的dra ... -
androlid 自定义字体
2012-06-07 11:08 10491、Android系统默认支持三种字体,分别为:“sans”, ... -
android 完全退出程序
2012-06-07 10:39 839android.os.Process.killProcess( ... -
[Android] 如何将应用程序转移到SD卡
2012-06-04 17:14 2553其实也只是将程序里的. ... -
android中用到的一些属性
2012-06-04 11:58 0如何防止Android应用中的Service被系统回收? 很 ... -
关键字飞入飞出效果
2012-06-04 10:47 1358一关键字样式及动画 pac ... -
android 传感器 SensorManager
2012-05-28 17:10 923传感器是一种物理装置,能够探测、感受外界的信号、物理条件(如光 ... -
android listview内容向上滚动
2012-05-25 14:54 39371:调用类 public class MainActivity ... -
android ui
2012-05-25 09:32 1253Android ui 一、 图片处理。 a) Drawable ... -
安卓开发中Bitmap/Drawable/byte[]互换 及Bitmap.Config里的一些参数
2012-05-25 09:17 1203在网上搜了一些其它的方法,在这里分享下 1.Drawab ... -
转 android 内容提供者contentprovider
2012-04-12 14:30 0内容提供器用来存放和获取数据并使这些数据可以被所有的应用程序访 ... -
activity onSaveInstanceState
2012-04-09 10:21 0先看Application Fundamentals ...
相关推荐
读取SIM 信息。 读取数据连接状态等相关信息。
读取的SIM卡信息包括:IMEI、IMSI、ICCID 开发环境:VS 2008,CF2.0,Windows Mobile 5.0 SDK ICCID 信息不是十分准确只供参考。
随着移动通信技术和智能卡技术的飞速发展,使得市场对SIM卡的要求 越来越高,不仅从性能上要求其智能化的程度提高,而且要求...据新业务日益增多,地位日益凸显,已经使得SIM卡成为个人信息存储和 增值业务的承载平台。
指导在使用移动模组遇到SIM_VDD为什么突然没有输出电压,CPIN?—error,通过长期经验总结,来解决分析帮助开发者找出问题原因,找到解决的方法,经过长期实践,并亲测有效,希望可以帮助广大朋友能够解决自己的问题...
获取网络和SIM卡信息
Android 读取SIM卡参数源代码,包括IMSI码,IMEI码等参数信息获取
vc开发读取手机sim卡联系人源代码,方便大家下载,不要资源分。
4G模组 SIM卡无法识别排查解决方案
完美读取SIM卡的电话簿,短信。加入滚动条进度控制,数据列表展示等。
Android 获取移动网络及SIM卡运营商信息,可获取到SIM卡国别、SIM卡序列号、SIM卡状态、运营商代号、手机制式等信息。获取各个数据项的值: listValues.add(tm.getDeviceId());//获取设备编号 listValues.add(tm...
单片机直接读写SIM卡的软件设计
GPS状态判断 SIM卡信息读取可以获取设备编号、软件版本、运营商代号、运营商名称、手机制式、设备位置等,不过在我的双卡机国产大山寨上就只能获取SIM卡1的信息。获取不到SIM卡2。第二个例子是一个判断当前GPS状态的...
iphone解卡,,,各类SIM卡解KI值。。 实现多号集成于一卡中,,方便使用
WWindows mobile 下读取手机SIM卡信息
NULL 博文链接:https://hanbaohong.iteye.com/blog/1758700
最近需做一个获取手机SIM卡短信的Demo,来给大家分享一下,和大家共同学习。
读SIM卡文件并将内容以十六进制显示出来 用户可以将读出的内容保存到文件里 在Windows Mobile下使用
Windows mobile 下读取手机SIM卡信息编程
Android例子源码GPS、GPRS、WIFI状态判断+SIM卡信息读取Android例子源码GPS、GPRS、WIFI状态判断+SIM卡信息读取
USB手机卡读卡器的功能是一样的,只是这个是...SIM卡读卡器驱动读写卡器的功能及特性 双频USB2.0新版**进口芯片,保证读卡兼容性及稳定,各种sim卡都可以正常读取,不挑卡。 可将多个手机号码读取后合并在可擦写的Super