通过TelephonyManager读取SIM卡信息:

AndroidManifest.xml中配置权限:
<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.ek.test"

android:versionCode="1"

android:versionName="1.0">

<application android:icon="@drawable/icon" android:label="@string/app_name">

<activity android:name=".SIMCard"

android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

<uses-sdk android:minSdkVersion="3" />

<uses-permission android:name = "android.permission.READ_PHONE_STATE"/>

</manifest>

主程序:import java.util.ArrayList;

import java.util.List;

import android.app.ListActivity;

import android.os.Bundle;

import android.telephony.TelephonyManager;

public class SIMCard extends ListActivity {

/** Called when the activity is first created. */

private List<String> items;

private List<String> values;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

TelephonyManager tm = (TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);//取得相关系统服务

items = new ArrayList();

values = new ArrayList();

items.add("SIM 卡状态");

switch(tm.getSimState()){ //getSimState()取得sim的状态 有下面6中状态

case TelephonyManager.SIM_STATE_ABSENT :values.add("无卡");break;

case TelephonyManager.SIM_STATE_UNKNOWN :values.add("未知状态");break;

case TelephonyManager.SIM_STATE_NETWORK_LOCKED :values.add("需要NetworkPIN解锁");break;

case TelephonyManager.SIM_STATE_PIN_REQUIRED :values.add("需要PIN解锁");break;

case TelephonyManager.SIM_STATE_PUK_REQUIRED :values.add("需要PUK解锁");break;

case TelephonyManager.SIM_STATE_READY :values.add("良好");break;

}



items.add("卡号");

if(tm.getSimSerialNumber()!=null){

values.add(tm.getSimSerialNumber().toString());

}else{

values.add("无法取得SIM卡号");

}



items.add("供货商代码");

if(tm.getSimOperator().equals("")){

values.add("无法取得供货商代码");

}else{

values.add(tm.getSimOperator().toString());

}



items.add("供货商");

if(tm.getSimOperatorName().equals("")){

values.add("无法取得供货商");

}else{

values.add(tm.getSimOperatorName().toString());

}



items.add("国籍");

if(tm.getSimCountryIso().equals("")){

values.add("无法取得国籍");

}else{

values.add(tm.getSimCountryIso().toString());

}

setListAdapter(new DataAdapter(SIMCard.this,items,values));

}

}
List的适配器import java.util.List;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.TextView;

public class DataAdapter extends BaseAdapter {

private List<String> items;

private List<String> values;

private LayoutInflater lif ;

public DataAdapter(Context context,List<String> items,List<String> values){

this.items = items;

this.values = values;

lif = LayoutInflater.from(context);

}



public int getCount() {

// TODO Auto-generated method stub

return items.size();

}

public Object getItem(int arg0) {

// TODO Auto-generated method stub

return items.get(arg0);

}

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

public View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

MyView mv ;

if(convertView == null){

convertView = lif.inflate(R.layout.mylayout, null);//加载自定义的布局

/*设置自定义的布局*/

mv = new MyView();

mv.tv1 = (TextView)convertView.findViewById(R.id.item1);

mv.tv2 = (TextView)convertView.findViewById(R.id.item2);

convertView.setTag(mv);

}else{

mv = (MyView)convertView.getTag();

}



mv.tv1.setText(items.get(position).toString());

mv.tv2.setText(values.get(position).toString());

return convertView;

}

/*自定义的view里面只有两个属性 也就是两行显示 第一行是显示标题 第二行是显示的内容*/

private class MyView{

TextView tv1;

TextView tv2;

}

}

res/layout/mylayout.xml :list的布局

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<TextView

android:id="@+id/item1"

android:layout_width="fill_parent"

android:layout_height="25px"



/>

<TextView

android:id="@+id/item2"

android:layout_width="fill_parent"

android:layout_height="25px"



/>



</LinearLayout>

更多相关文章

  1. Android(安卓)DrawerLayout 使用
  2. Android中一种ThreadPool的实现
  3. android手机电池管理
  4. android实现接通和挂断电话
  5. Android(安卓)ListView中有Button,ItemClick事件失效
  6. Android消息推送(广播机制)+通知
  7. Android之selector
  8. Android(安卓)popupWindow点击某个控件在其下面显示弹窗,例如淘
  9. android TranslateAnimation类作动态菜单

随机推荐

  1. 关于android旋屏问题
  2. android lisetview的多列模版
  3. Android(安卓)Handler机制12之Callable、
  4. android 8.1 修改禁止状态栏下拉
  5. android中xml文件的使用详解
  6. android布局相关属性
  7. Android中gravity与layout_gravity的区别
  8. linearLayout 和 relativeLayout的属性区
  9. Android中drawable各个属性讲解
  10. Android(安卓)近百个项目的源代码,覆盖And