Android 如何在使用CursorLoader时仅获取包含电子邮件的联系人
我正在尝试从具有电子邮件地址的设备获取所有联系人。 现在我的代码(如下)获得了所有联系人,我需要添加什么才能只获得电子邮件联系人Android 如何在使用CursorLoader时仅获取包含电子邮件的联系人,android,android-contacts,Android,Android Contacts,我正在尝试从具有电子邮件地址的设备获取所有联系人。 现在我的代码(如下)获得了所有联系人,我需要添加什么才能只获得电子邮件联系人 final static String SELECTION = Contacts.DISPLAY_NAME_PRIMARY + "<>''" + " AND " + Contacts.IN_VISIBLE_GROUP + "=1"; final static String[] PROJECTION = { Contacts._ID
final static String SELECTION = Contacts.DISPLAY_NAME_PRIMARY + "<>''" + " AND " + Contacts.IN_VISIBLE_GROUP + "=1";
final static String[] PROJECTION = {
Contacts._ID, Contacts.LOOKUP_KEY, Contacts.DISPLAY_NAME_PRIMARY , Contacts.PHOTO_THUMBNAIL_URI, SORT_ORDER, Contacts.SORT_KEY_PRIMARY
};
new CursorLoader(getActivity(),
Contacts.CONTENT_URI,
ContactsQuery.PROJECTION,
ContactsQuery.SELECTION,
null,
Contacts.SORT_KEY_PRIMARY);
final static String SELECTION=Contacts.DISPLAY\u NAME\u PRIMARY+“''+”和“+Contacts.IN\u VISIBLE\u GROUP+”=1”;
最终静态字符串[]投影={
联系人。\ ID,Contacts.LOOKUP\键,Contacts.DISPLAY\名称\主联系人,Contacts.PHOTO\缩略图\ URI,排序\顺序,Contacts.SORT\键\主联系人
};
新游标加载程序(getActivity(),
Contacts.CONTENT_URI,
接触式投影,
联系方式选择,
无效的
联系人。排序键(主);
试试这个
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;
}
从cur1中,您可以获得所有具有电子邮件ID的联系人。检查此项,请提供一些解释。硬编码的答案肯定会让votesThanks失望,但我需要在我的代码中做一个过滤器,而不是获取所有联系人然后检查它们(这就是我现在所做的)@Nabin我现在已经给出了解释,为什么会被否决?你能再解释一下你的要求吗@User733284您在回答后询问要求?
Cursor cur1 = cr.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[]{id}, null);