我只想显示其电子邮件地址存在的联系人姓名。否则,该联系人姓名不应显示在列表中。我怎样才能做到这一点?任何人都可以帮我吗?从联系人列表中获取电子邮件地址Android
回答
public ArrayList<String> getNameEmailDetails(){
ArrayList<String> names = new ArrayList<String>();
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));
Cursor cur1 = cr.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[]{id}, null);
while (cur1.moveToNext()) {
//to get the contact names
String name=cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
Log.e("Name :", name);
String email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
Log.e("Email", email);
if(email!=null){
names.add(name);
}
}
cur1.close();
}
}
return names;
}
上述方法返回具有电子邮件ID的名称的数组列表。
如果您已经可以获取联系人及其电子邮件地址(如果存在),为什么不从联系人列表中删除没有电子邮件地址的联系人?
有关Android Contacts API的更多信息,请参阅here。
嘿谢谢IrAndroid。是的,我只是这样做的。但我得到所有联系人的名字。你能告诉我一些代码吗? – 2012-04-12 03:42:14
这里有一个类似的问题,你在问什么:http://stackoverflow.com/questions/5205999/android-get-a-cursor-only-with-contacts-that-have-an-email-listed-android-2 -0。 – lrAndroid 2012-04-12 03:43:11
嘿,我试过这个链接给出的代码。但我正在收到电子邮件地址。不是名字。如果电子邮件地址存在,我想获取联系人姓名。你能给我一些代码吗?这样我可以得到一些想法。 – 2012-04-12 04:37:01
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));
Cursor emailCur = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id},null);
while (emailCur.moveToNext()) {
String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
Log.e("Email",name+" "+email);
}
emailCur.close();
}
}
再次感谢Agarwal :) – 2012-04-12 08:54:33
这是我的超级快速查询拉电子邮件地址。这是不是拉的所有联系列由其他答案的建议快得多......
public ArrayList<String> getNameEmailDetails() {
ArrayList<String> emlRecs = new ArrayList<String>();
HashSet<String> emlRecsHS = new HashSet<String>();
Context context = getActivity();
ContentResolver cr = context.getContentResolver();
String[] PROJECTION = new String[] { ContactsContract.RawContacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.PHOTO_ID,
ContactsContract.CommonDataKinds.Email.DATA,
ContactsContract.CommonDataKinds.Photo.CONTACT_ID };
String order = "CASE WHEN "
+ ContactsContract.Contacts.DISPLAY_NAME
+ " NOT LIKE '%@%' THEN 1 ELSE 2 END, "
+ ContactsContract.Contacts.DISPLAY_NAME
+ ", "
+ ContactsContract.CommonDataKinds.Email.DATA
+ " COLLATE NOCASE";
String filter = ContactsContract.CommonDataKinds.Email.DATA + " NOT LIKE ''";
Cursor cur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, PROJECTION, filter, null, order);
if (cur.moveToFirst()) {
do {
// names comes in hand sometimes
String name = cur.getString(1);
String emlAddr = cur.getString(3);
// keep unique only
if (emlRecsHS.add(emlAddr.toLowerCase())) {
emlRecs.add(emlAddr);
}
} while (cur.moveToNext());
}
cur.close();
return emlRecs;
}
我试图通过“阿加瓦尔香卡”提供的代码,但它花了约4秒,让我在测试设备上的接触,这代码耗时约0.04秒。这个更快的代码我加入了SaluSafe应用程序。 Download SaluSafe from google play。
终极答案..必须使用这一个 – 2013-06-13 10:00:02
超快速,比其他解决方案快得多。 – 2013-07-06 13:28:03
这应该是答案。不是另一个。 +1 – alicanbatur 2014-01-14 09:31:37
以下是从联系人列表中获取联系人的电子邮件ID的简单方法。你需要传递的用户接触ID下面的方法,如果存在
public String getEmail(String contactId) {
String emailStr = "";
final String[] projection = new String[]{ContactsContract.CommonDataKinds.Email.DATA,
ContactsContract.CommonDataKinds.Email.TYPE};
Cursor emailq = managedQuery(ContactsContract.CommonDataKinds.Email.CONTENT_URI, projection, ContactsContract.Data.CONTACT_ID + "=?", new String[]{contactId}, null);
if (emailq.moveToFirst()) {
final int contactEmailColumnIndex = emailq.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA);
while (!emailq.isAfterLast()) {
emailStr = emailStr + emailq.getString(contactEmailColumnIndex) + ";";
emailq.moveToNext();
}
}
return emailStr;
}
如果您想了解如何在您的应用程序获取联系人列表请点击此链接也将返回你的电子邮件ID:show contact list in app android - trinitytuts
另一种解决方案。
private static final Uri URI_CONTACT_DATA = ContactsContract.Data.CONTENT_URI;
private static final String COLUMN_EMAIL = ContactsContract.CommonDataKinds.Email.ADDRESS;
private static final String COLUMN_DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME_PRIMARY;
private static final String COLUMN_MIMETYPE = ContactsContract.Data.MIMETYPE;
private static final String[] PROJECTION = {
COLUMN_DISPLAY_NAME,
COLUMN_EMAIL,
COLUMN_MIMETYPE
};
private Cursor getCursor() {
ContentResolver resolver = context.getContentResolver();
String selection = COLUMN_MIMETYPE + "=?";
final String[] selectionArgs = {ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE};
return resolver.query(URI_CONTACT_DATA, PROJECTION, selection, selectionArgs, null);
}
的问题是,在ContactsContract.Contacts.CONTENT_URI
表所拥有的整个联系人数据库。这包括电话号码,电子邮件,组织,甚至是完全自定义的数据,所以如果不使用ContactsContract.Data.MIMETYPE
进行筛选,就不能使用它。此数据库中的一行包含与某个帐户相关的值(或值,它具有15个通用列),因此您可能需要自己对它们进行分组。我需要这个来自动完成电子邮件,所以格式(每行电子邮件)是完美的。
- 1. Xcode从地址簿获取联系人电子邮件地址
- 2. 从联系人详细信息获取电子邮件地址
- 3. Android联系人列表获取地址
- 4. 如何从Android的自动填充联系人列表中获取电子邮件地址列表?
- 5. iOS获取所选联系人的电子邮件地址
- 6. 如何获取Hotmail联系人的电子邮件地址?
- 7. 如何获取联系人的电子邮件地址?
- 8. 访问联系人并获取电子邮件地址
- 9. 如何从联系人获得电子邮件ID和地址
- 10. 从Google Apps目录获取电子邮件联系人列表?
- 11. 访问联系人列表以使用电子邮件地址?
- 12. 黑莓与电子邮件地址列表联系人
- 13. 如何从Android手机的联系人列表中获取电子邮件?
- 14. 以编程方式从Exchange Outlook联系人获取Internet电子邮件地址?
- 15. 从各种电子邮件地址访问联系人
- 16. 获取联系人电话的电子邮件android
- 17. 联系选取器获取电子邮件地址
- 18. 如何从联系人列表中获取联系人姓名,电话号码和电子邮件ID?
- 19. 如何通过从Outlook联系人列表中获取他们的电子邮件地址来发送电子邮件给A列中的人员姓名?
- 20. 使用Javascript中的Google People API获取联系人电子邮件地址
- 21. hCard:将联系表格作为电子邮件地址列表
- 22. ios如何从联系人,邮件中检索电子邮件地址?
- 23. 从联系人列表中获取姓名和电子邮件非常缓慢
- 24. 从联系人列表中获取不同的电子邮件ID
- 25. 如何从Outlook联系人中获取列中列出的姓名的电子邮件地址?
- 26. 从Samaccountname获取电子邮件地址
- 27. 从facebook获取电子邮件地址
- 28. 从给定电子邮件地址的地址簿中获取联系人姓名
- 29. 我无法从电话的联系人中加载电子邮件地址
- 30. Xamarin android获取地址联系人
嘿非常感谢 – 2012-04-12 05:33:26
我在ArrayList中获取联系人姓名和电子邮件地址。我看到这样的日志猫:名称:[email protected],电子邮件:[email protected],姓名:[email protected],电子邮件:[email protected],姓名:xyz,电子邮件:xyz @ gmail。 COM。这意味着我得到混合名称和电子邮件地址在联系人名称:( – 2012-04-12 05:44:29
试试这个备用工作答案 – 2012-04-12 06:50:49