android中判断sim卡状态和读取联系人资料的方法
2011-06-07 16:14
411 查看
在写程序中,有时候可能需要获取sim卡中的一些联系人资料。在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息。
读取的代码如下:
main.xml布局文件如下:
同时还要在AndroidManefist.xml中添加读sim卡的权限,如下:
以后一定会用到。。
读取的代码如下:
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); |
} |
} |
<? 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 > |
<? 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 > |
相关文章推荐
- android中判断sim卡状态和读取联系人资料的方法【转】
- android中判断sim卡状态和读取联系人资料的方法
- android中判断sim卡状态和读取联系人资料的方法
- android中判断sim卡状态和读取联系人资料的方法
- 十九、android中判断sim卡状态和读取联系人资料的方法
- android中判断sim卡状态和读取联系人资料的方法
- 【SIM】Android判断SIM卡状态并读取SIM卡内容
- Android 判断 SIM卡 状态 并 读取 SIM卡 内容
- Android判断SIM卡状态并读取SIM内容
- Android中监听判断网络连接状态的方法
- Android 联系人信息的读取注意判断是否为NULL Android联系人的删除实质
- android判断网络连接状态的三种方法
- Android 判断网络状态对音频静音的实现方法
- Android编程之判断SD卡状态的方法
- Android判断网络状态方法详解
- Android读取sim卡的状态
- Android判断网络状态方法详解
- Android判断网络状态方法详解
- Android通讯录联系人的读取、更新、插入、删除等方法
- Android - 判断SIM卡状态