当前位置: 代码迷 >> Android >> android中判断sim卡状态跟读取联系人资料的方法
  详细解决方案

android中判断sim卡状态跟读取联系人资料的方法

热度:18   发布时间:2016-04-28 08:11:33.0
android中判断sim卡状态和读取联系人资料的方法
在写程序中,有时候可能需要获取sim卡中的一些联系人资料。在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息。

1. [代码]PhoneTest.java 

package 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);      }         } 

2. [代码]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> 

3. [代码]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> 



  相关解决方案