1
A
回答
1
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
if (Integer.parseInt(cur.getString(
cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
new String[]{id}, null);
while (pCur.moveToNext()) {
String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Toast.makeText(NativeContentProvider.this, "Name: " + name + ", Phone No: " + phoneNo, Toast.LENGTH_SHORT).show();
}
pCur.close();
}
}
}
+0
僅返回電話號碼的聯繫人。不是電子郵件 –
+0
@JohnSmith我的例子有電話號碼和電子郵件地址。 –
3
這是我如何獲取與電子郵件和電話號碼接觸。 聯繫人對象只是我創建的一個簡單的pojo。此代碼位於用戶提供訪問聯繫人的權限後運行的AsyncTask中。
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
do {
// get the contact's information
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
Integer hasPhone = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
// get the user's email address
String email = null;
Cursor ce = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id}, null);
if (ce != null && ce.moveToFirst()) {
email = ce.getString(ce.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
ce.close();
}
// get the user's phone number
String phone = null;
if (hasPhone > 0) {
Cursor cp = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null);
if (cp != null && cp.moveToFirst()) {
phone = cp.getString(cp.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
cp.close();
}
}
// if the user user has an email or phone then add it to contacts
if ((!TextUtils.isEmpty(email) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()
&& !email.equalsIgnoreCase(name)) || (!TextUtils.isEmpty(phone))) {
Contact contact = new Contact();
contact.name = name;
contact.email = email;
contact.phoneNumber = phone;
contacts.add(contact);
}
} while (cursor.moveToNext());
// clean up cursor
cursor.close();
}
對於DISPLAY_NAME您可以使用以下方法:
private final String DISPLAY_NAME = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?
ContactsContract.Contacts.DISPLAY_NAME_PRIMARY : ContactsContract.Contacts.DISPLAY_NAME;
下面是一個AsyncTask Example,我這個使用鏈接。
相關問題
- 1. 通過短信或電子郵件發送聯繫人(電話號碼)
- 2. 如何僅通過電話號碼獲取聯繫人姓名?
- 3. 如何通過電話號碼獲取聯繫人ID
- 4. Android:如何通過電子郵件從聯繫人中獲取號碼?
- 5. 保存電話號碼並通過電子郵件發送給聯繫人
- 6. Android聯繫人 - 獲取電話號碼
- 7. 如何從聯繫人列表中獲取聯繫人姓名,電話號碼和電子郵件ID?
- 8. iOS聯繫方式如何通過電話獲取聯繫人號碼
- 9. 如何通過電話號碼聯繫?
- 10. 通過電話號碼獲取正確的聯繫人姓名
- 11. 獲取聯繫人電話的電子郵件android
- 12. 通過電子郵件ID獲取聯繫人
- 13. 通過名稱獲取聯繫人電子郵件
- 14. 通過電話號碼或電子郵件獲取相同的客戶
- 15. 是否有特定聯繫人的聯繫電話號碼或電子郵件選擇器/選取器?
- 16. 從電話聯繫人中獲取姓名,電話號碼和電子郵件地址
- 17. 如何從android中的聯繫人獲取電話號碼
- 18. 如何獲取Skype聯繫人的電話號碼?
- 19. 如何獲取什麼應用聯繫人的電話號碼
- 20. 如何從Android設備獲取電話號碼聯繫人
- 21. 如何獲取按電話號碼排序的聯繫人?
- 22. 審查員的聯繫信息,如電話號碼或電子郵件地址
- 23. 如何獲取所有聯繫人的名字,姓氏,電子郵件,電話號碼等,不需要重複
- 24. 獲取聯繫電話號碼
- 25. Android:從聯繫人中檢索姓名,電話號碼,電子郵件,生日
- 26. 如何獲得谷歌聯繫人電子郵件和電話號碼離子,cordova與$ cordovaOauth?
- 27. 查詢以獲取電子郵件地址,聯繫人姓名和電話號碼的一行代碼
- 28. 通過hotmail聯繫人通過電子郵件邀請
- 29. iOS人員選取器獲取聯繫人電子郵件
- 30. 如何獲取Hotmail聯繫人的電子郵件地址?
查看[this](http://stackoverflow.com/a/26820544/2252830) – pskink
+1對@pskink指出的答案:當我寫這篇評論時,本頁面的解決方案是完全沒有效率,因爲它們使用嵌套查詢。 –