清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息。
PhoneTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | 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); } } |
main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <? 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <? 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 > |