转载地址:http://blog.csdn.net/chenzheng_java/article/details/6257165
首先加上读取电话薄的权限:
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
package cn.com.chenzheng_java;
import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.util.Log;
import android.widget.TextView;
/**
* @description 获取用户的电话簿中的信息
* @author chenzheng_java
*
*/
public class ContactsReaderActivtiy extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contactsreader);
queryContactsInfo();
}
private void queryContactsInfo() {
/**
* 这里的Phone是android.provider.ContactsContract.CommonDataKinds.Phone
*/
Uri uri = Phone.CONTENT_URI;
String info = "uri:" + uri.toString();
/***
* managedQuery方法和我们使用ContentResover.query方法的唯一区别时,
* managedQuery方法实现中多了一行startManagingCursor(cursor),这代表着
* 系统会自动根据我们当前activity的生命周期变化来管理我们cursor的生命周期,
* 自动的调用其相应的失效方法deactivate()或者重新查询方法requery()或者close()方法
* 其实这也是为什么我们在这里没有显式的关闭cursor的原因。
*/
Cursor cursor = managedQuery(uri, null, null, null, null);
cursor.moveToFirst();
int count = cursor.getCount();
/**
* 这里的Contacts是android.provider.ContactsContract.Contacts
*/
int nameIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
int numberIndex = cursor.getColumnIndex(Phone.NUMBER);
String[] names = cursor.getColumnNames();
for (int i = 0; i < count; i++) {
for (String name : names) {
String s = cursor.getString( cursor.getColumnIndex(name))+" ";
Log.i("列名"+name,s);
}
Log.i("通知","一条信息已经结束了。");
info+="类型:"+cursor.getString(cursor.getColumnIndex(Phone.MIMETYPE));
info += " 姓名:" +cursor.getString(nameIndex) ;
info += " 住宅电话:" + cursor.getString(numberIndex) + " /n";
// info += " Phone.Number = " + Phone.NUMBER + " index=" + numberIndex;
cursor.moveToNext();
}
TextView textView = (TextView) findViewById(R.id.textView_contacts);//textView_contacts是控件的ID,用于显示获取内容
textView.setText(info);
}
}