在写程序中,有时候可能需要获取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(安卓)Studio中获取SHA1或MD5的方法
  2. ViewPager + Fragment + RecyclerView 切换ViewPager时,RecyclerV
  3. React Native获取移动设备信息(react-native-device-info)如何使
  4. 判断是否获取了悬浮窗权限
  5. Android(安卓)获得view的宽和高
  6. contentprovider--读取写入联系人数据
  7. Android(安卓)N SettingsProvider的数据保存
  8. Android开发:Button获取焦点
  9. 【知识点】android Bitmap和Canvas

随机推荐

  1. Android 自动换行流式布局的RadioGroup
  2. android view相对于根布局的坐标获取
  3. Android腾讯微博客户端开发四:微博发送篇
  4. android 4.2版本的sdcard文件目录分析
  5. 捕获Android文本输入框的软键盘完成(Done
  6. Stopping ADB server failed(code -1)安
  7. Android(安卓)2.2 SDK操作系统界面截屏抢
  8. android典型代码系列(十)------获取一个
  9. ANDROID图片压缩代码
  10. Android如何使用selector设置RelativeLay