package com.android.test; |
003 | import android.app.Activity; |
004 | import android.content.Context; |
005 | import android.content.Intent; |
006 | import android.database.Cursor; |
007 | import android.net.Uri; |
008 | import android.os.Bundle; |
009 | import android.telephony.TelephonyManager; |
010 | import android.widget.TextView; |
011 | |
012 | public class PhoneTest extends Activity { |
013 | private TextView mTextView; |
014 | protected Cursor mCursor = null ; |
015 | private TelephonyManager mTelephonyManager; |
016 | private String mString = "" ; |
017 | |
018 | /** Called when the activity is first created. */ |
019 | @Override |
020 | public void onCreate(Bundle savedInstanceState) { |
021 | super .onCreate(savedInstanceState); |
022 | setContentView(R.layout.main); |
023 | mTextView = (TextView)findViewById(R.id.text); |
024 | mTextView.setTextSize( 20 .3f); |
025 | isSimExist(); |
026 | if (getSimState() == TelephonyManager.SIM_STATE_READY){ |
027 | mString += " 卡存在\n" ; |
028 | getSimContacts( "content://icc/adn" ); //一般用这一条,如果这条不行的话可以试试下面的一条。 |
029 | getSimContacts( "content://sim/adn" );//此种读法在我们手机里不能读取,所以,还是用上个uri比较好。 |
030 | } |
031 | mTextView.setText(mString); |
032 | } |
033 | |
034 | private void getSimContacts(String str){ |
035 | Intent intent = new Intent(); |
036 | intent.setData(Uri.parse(str)); |
037 | Uri uri = intent.getData(); |
038 | mCursor = getContentResolver().query(uri, null , null , null , null ); |
039 | if (mCursor == null ){ |
040 | mString += "不能从" + str + "读数据\n" ; |
041 | return ; |
042 | } |
043 | mString += "第一列:" + mCursor.getColumnName( 0 ) + "\n" ; |
044 | mString += "第二列:" + mCursor.getColumnName( 1 ) + "\n" ; |
045 | mString += "第三列:" + mCursor.getColumnName( 2 ) + "\n" ; |
046 | mString += "第四列:" + mCursor.getColumnName( 3 ) + "\n" ; |
047 | mString += "列数:" + mCursor.getColumnCount() + "\n" ; |
048 | mString += "行数:" + mCursor.getCount() + "\n" ; |
049 | if (mCursor != null ) { |
050 | while (mCursor.moveToNext()) { |
051 | // 取得联系人名字 |
052 | int nameFieldColumnIndex = mCursor.getColumnIndex( "name" ); |
053 | mString += mCursor.getString(nameFieldColumnIndex)+ " " ; |
054 | // 取得电话号码 |
055 | int numberFieldColumnIndex = mCursor |
056 | .getColumnIndex( "number" ); |
057 | mString += mCursor.getString(numberFieldColumnIndex)+ " " ; |
058 | // 取得邮箱 |
059 | int emailsFieldColumnIndex = mCursor |
060 | .getColumnIndex( "emails" ); |
061 | mString += mCursor.getString(emailsFieldColumnIndex)+ " " ; |
062 | // 取得id |
063 | int idFieldColumnIndex = mCursor |
064 | .getColumnIndex( "_id" ); |
065 | mString += mCursor.getString(idFieldColumnIndex)+ "\n" ; |
066 | } |
067 | } |
068 | mString += mCursor + "\n" ; |
069 | mCursor.close(); |
070 | } |
071 | |
072 | private int getSimState(){ |
073 | return mTelephonyManager.getSimState(); |
074 | } |
075 | |
076 | private void isSimExist(){ |
077 | mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); |
078 | int simState = mTelephonyManager.getSimState(); |
079 | |
080 | switch (simState) { |
081 | |
082 | case TelephonyManager.SIM_STATE_ABSENT: |
083 | mString = "无卡" ; |
084 | // do something |
085 | break ; |
086 | |
087 | case TelephonyManager.SIM_STATE_NETWORK_LOCKED: |
088 | mString = "需要NetworkPIN解锁" ; |
089 | // do something |
090 | |
091 | break ; |
092 | |
093 | case TelephonyManager.SIM_STATE_PIN_REQUIRED: |
094 | mString = "需要PIN解锁" ; |
095 | // do something |
096 | break ; |
097 | |
098 | case TelephonyManager.SIM_STATE_PUK_REQUIRED: |
099 | mString = "需要PUN解锁" ; |
100 | // do something |
101 | break ; |
102 | |
103 | case TelephonyManager.SIM_STATE_READY: |
104 | mString = "良好" ; |
105 | // do something |
106 | break ; |
107 | |
108 | case TelephonyManager.SIM_STATE_UNKNOWN: |
109 | mString = "未知状态" ; |
110 | // do something |
111 | break ; |
112 | } |
113 | mTextView.setText(mString); |
114 | } |
115 | |
116 | } |