Android获取手机SIM卡状态

package com.android.test;  
 
003import android.app.Activity;  
004import android.content.Context;  
005import android.content.Intent;  
006import android.database.Cursor;  
007import android.net.Uri;  
008import android.os.Bundle;  
009import android.telephony.TelephonyManager;  
010import android.widget.TextView;  
011     
012public 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}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值