在写程序中,有时候可能需要获取sim卡中的一些联系人资料。在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息。

PhoneTest.javapackage com.android.test;     import android.app.Activity;  import android.content.Context;  import android.content.Intent;  import android.database.Cursor;  import android.net.Uri;  import android.os.Bundle;  import android.telephony.TelephonyManager;  import android.widget.TextView;     public class PhoneTest extends Activity {      private TextView mTextView;      protected Cursor mCursor = null;      private TelephonyManager mTelephonyManager;      private String mString = "";             /** Called when the activity is first created. */     @Override     public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);          mTextView = (TextView)findViewById(R.id.text);          mTextView.setTextSize(20.3f);          isSimExist();          if(getSimState() == TelephonyManager.SIM_STATE_READY){              mString += "    卡存在\n";              getSimContacts("content://icc/adn"); //一般用这一条,如果这条不行的话可以试试下面的一条。              getSimContacts("content://sim/adn");//此种读法在我们手机里不能读取,所以,还是用上个uri比较好。          }          mTextView.setText(mString);      }             private void getSimContacts(String str){          Intent intent = new Intent();          intent.setData(Uri.parse(str));          Uri uri = intent.getData();          mCursor = getContentResolver().query(uri, null, null, null, null);          if(mCursor == null){              mString += "不能从" + str + "读数据\n";              return ;          }          mString += "第一列:" + mCursor.getColumnName(0) + "\n";          mString += "第二列:" + mCursor.getColumnName(1) + "\n";          mString += "第三列:" + mCursor.getColumnName(2) + "\n";          mString += "第四列:" + mCursor.getColumnName(3) + "\n";          mString += "列数:" + mCursor.getColumnCount() + "\n";          mString += "行数:" + mCursor.getCount() + "\n";          if (mCursor != null) {              while (mCursor.moveToNext()) {                  // 取得联系人名字                  int nameFieldColumnIndex = mCursor.getColumnIndex("name");                  mString += mCursor.getString(nameFieldColumnIndex)+"    ";                  // 取得电话号码                  int numberFieldColumnIndex = mCursor                          .getColumnIndex("number");                  mString += mCursor.getString(numberFieldColumnIndex)+"    ";                  // 取得邮箱                  int emailsFieldColumnIndex = mCursor                          .getColumnIndex("emails");                  mString += mCursor.getString(emailsFieldColumnIndex)+"    ";                  // 取得id                  int idFieldColumnIndex = mCursor                          .getColumnIndex("_id");                  mString += mCursor.getString(idFieldColumnIndex)+"\n";              }          }          mString += mCursor + "\n";          mCursor.close();      }             private int getSimState(){          return mTelephonyManager.getSimState();      }             private void isSimExist(){          mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);           int simState = mTelephonyManager.getSimState();              switch (simState) {                  case TelephonyManager.SIM_STATE_ABSENT:                   mString = "无卡";                   // do something                   break;                  case TelephonyManager.SIM_STATE_NETWORK_LOCKED:                   mString = "需要NetworkPIN解锁";                   // do something                      break;                  case TelephonyManager.SIM_STATE_PIN_REQUIRED:                   mString = "需要PIN解锁";                   // do something                   break;                  case TelephonyManager.SIM_STATE_PUK_REQUIRED:                   mString = "需要PUN解锁";                   // do something                   break;                  case TelephonyManager.SIM_STATE_READY:                   mString = "良好";                   // do something                   break;                  case TelephonyManager.SIM_STATE_UNKNOWN:                   mString = "未知状态";                   // do something                   break;           }           mTextView.setText(mString);      }         } [代码] main.xml<?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"     >      <ScrollView android:layout_width="fill_parent"     android:layout_height="fill_parent">      <LinearLayout android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent">      <TextView  android:id="@+id/text"     android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:text="@string/hello"     />      </LinearLayout>      </ScrollView>  </LinearLayout> [代码] AndroidManefist.xml<?xml version="1.0" encoding="utf-8"?>  <manifest xmlns:android="http://schemas.android.com/apk/res/android"       package="com.android.test"       android:versionCode="1"       android:versionName="1.0">            <application android:icon="@drawable/icon" android:label="@string/app_name">          <activity android:name=".PhoneTest"                   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-permission android:name="android.permission.READ_CONTACTS"></uses-permission>  </manifest> 

更多相关文章

  1. 检索Android的图片库,并显示
  2. 利用Dumpsys做系统诊断
  3. Android(安卓)获取运营商信息(完整版)-解决高通,MTK等双卡问题
  4. 获取Android设备的唯一识别码UUID
  5. Android升级apk签名文件校验
  6. Android注册设备管理器(获取超级管理员权限)
  7. Android中Java根据文件头获取文件类型
  8. android用SharedPreferences保存登录账户密码
  9. android查看input设备

随机推荐

  1. android 实现listView异步加载图片
  2. android画图----ShapeDrawable和shader
  3. Android(安卓)build system note
  4. [Android]RelativeLayout中最底的View其l
  5. Android(安卓)MenuItem 设置文本颜色-Tex
  6. 实现透明渐变的Activity
  7. Android(安卓)Studio OkHttpClient使用教
  8. Android(安卓)监听网络状态
  9. Android(安卓)开发中使用Intent传递数据
  10. J6 Android(安卓)eMMC 分区介绍