第一步,在Main.xml布局文件中聲明一個Button控件,布局文件代碼如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/query_btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="點擊查詢聯系人信息"/>
</LinearLayout>
第二步:在Activity中寫入代碼,讀取聯系人姓名和聯系人電話信息,Activity代碼如下:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 指定頁面布局
setContentView(R.layout.main);
// 聲明一個Button按鈕
Button queryBtn = (Button) findViewById(R.id.query_btn);
// 新建一個點擊事件監聽器對象
OnClickListener ocl = new OnClickListener() {
@Override
public void onClick(View v) {
ContentResolver contentResolver = getContentResolver();
// 獲得所有的聯系人
Cursor cursor = contentResolver.query(
ContactsContract.Contacts.CONTENT_URI, null, null,
null, null);
// 循環遍歷
if (cursor.moveToFirst()) {
int idColumn = cursor
.getColumnIndex(ContactsContract.Contacts._ID);
int displayNameColumn = cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
do {
// 獲得聯系人的ID號
String contactId = cursor.getString(idColumn);
// 獲得聯系人姓名
String disPlayName = cursor
.getString(displayNameColumn);
// 查看該聯系人有多少個電話號碼。如果沒有這返回值為0
int phoneCount = cursor
.getInt(cursor
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
//在聯系人數量不為空的情況下執行
if (phoneCount > 0) {
// 獲得聯系人的電話號碼列表
Cursor phonesCursor = getContentResolver()
.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = " + contactId, null,
null);
if (phonesCursor.moveToFirst()) {
do {
// 遍歷所有的電話號碼
String phoneNumber = phonesCursor
.getString(phonesCursor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Toast.makeText(MainActivity.this,
"聯系人姓名:" + disPlayName+"\n聯系人電話:" + phoneNumber,
Toast.LENGTH_LONG).show();
} while (phonesCursor.moveToNext());
}
}
} while (cursor.moveToNext());
}
}
};
// 為按鈕設置監聽器
queryBtn.setOnClickListener(ocl);
}
}
第三步:在AndroidManifest.xml中添加<uses-permission android:name="android.permission.READ_CONTACTS" />來獲得訪問通訊錄的權限,添加完成或即可運行程序獲取聯系人信息.