android獲取手機通訊錄聯系人信息
private void getPhoneContacts() {
ContentResolver resolver = this.getContentResolver();
// 獲取手機聯系人
Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,
new String[] { Phone.CONTACT_ID, Phone.DISPLAY_NAME,
Phone.NUMBER },
Phone.DISPLAY_NAME + "=?" + " AND " + Phone.TYPE + "='"
+ Phone.TYPE_MOBILE + "'", new String[] { name }, null);
if (phoneCursor != null) {
while (phoneCursor.moveToNext()) {
String number = phoneCursor.getString(2);
// 當手機號碼為空的或者為空字段 跳過當前循環
if (TextUtils.isEmpty(phoneNumber))
continue;
// 得到聯系人名稱
String username = phoneCursor.getString(1);
mContactsName.add(contactName);
mContactsNumber.add(phoneNumber);
}
phoneCursor.close();
}
}
獲得手機sim卡聯系人信息
sim卡和手機本人 獲取的方式類似 只是url有點不一樣 ,須要注意的一點是 sim卡 是沒有聯系人頭像的。
private void getSIMContacts() {
ContentResolver resolver = mContext.getContentResolver();
// 獲取Sims卡聯系人
Uri uri = Uri.parse("content://icc/adn");
Cursor phoneCursor = resolver.query(uri,
new String[] { Phone.CONTACT_ID, Phone.DISPLAY_NAME,
Phone.NUMBER },
Phone.DISPLAY_NAME + "=?" + " AND " + Phone.TYPE + "='"
+ Phone.TYPE_MOBILE + "'", new String[] { name }, null);
if (phoneCursor != null) {
while (phoneCursor.moveToNext()) {
String number = phoneCursor.getString(2);
// 當手機號碼為空的或者為空字段 跳過當前循環
if (TextUtils.isEmpty(phoneNumber))
continue;
// 得到聯系人名稱
String username = phoneCursor.getString(1);
mContactsName.add(contactName);
mContactsNumber.add(phoneNumber);
}
phoneCursor.close();
}
}
調用系統撥打電話的界面 ,代碼如下。
tel:電話號碼
//調用系統方法撥打電話
Intent dialIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + mContactsNumber.get(position)));
startActivity(dialIntent);
最后,千萬別忘記在AndroidManifest.xml文件中添加權限,否則運行程序是報錯!
<!-- 讀取聯系人權限 -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<!-- 撥打電話權限 -->
<uses-permission android:name="android.permission.CALL_PHONE"/>