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"/>