我是靠谱客的博主 笑点低寒风,最近开发中收集的这篇文章主要介绍android 监听sim卡状态,android中判断sim卡状态和读取联系人资料的方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在写程序中,有时候可能需要获取sim卡中的一些联系人资料。在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息。

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

}

}

最后

以上就是笑点低寒风为你收集整理的android 监听sim卡状态,android中判断sim卡状态和读取联系人资料的方法的全部内容,希望文章能够帮你解决android 监听sim卡状态,android中判断sim卡状态和读取联系人资料的方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部