如何在android中从联系人列表中删除重复联系人
请看一看:-如何在android中从联系人列表中删除重复联系人,android,contacts,Android,Contacts,请看一看:- public static ArrayList<ContactsEntityBean> getContactDetails( Context mContext) { ArrayList<ContactsEntityBean> contactList = new ArrayList<ContactsEntityBean>(); ContentResolver cr = mContext.ge
public static ArrayList<ContactsEntityBean> getContactDetails(
Context mContext) {
ArrayList<ContactsEntityBean> contactList = new ArrayList<ContactsEntityBean>();
ContentResolver cr = mContext.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()) {
ContactsEntityBean contactsEntityBean = new ContactsEntityBean();
// 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);
contactsEntityBean.setName(name);
contactsEntityBean.setEmail(email);
if (email != null) {
contactList.add(contactsEntityBean);
}
}
cur1.close();
}
}
return contactList;
}
publicstaticarraylistgetcontactdetails(
上下文(mContext){
ArrayList contactList=新建ArrayList();
ContentResolver cr=mContext.getContentResolver();
Cursor cur=cr.query(Contacts contract.Contacts.CONTENT\u URI,null,
空,空,空);
如果(cur.getCount()>0){
while(cur.moveToNext()){
字符串id=cur.getString(cur
.getColumnIndex(Contacts contract.Contacts._ID));
游标cur1=cr.query(
ContactsContract.CommonDataTypes.Email.CONTENT\u URI,
空,ContactsContract.CommonDataTypes.Email.CONTACT\u ID
+“=?”,新字符串[]{
身份证件
},空);
while(cur1.moveToNext()){
ContactsEntityBean ContactsEntityBean=新的ContactsEntityBean();
//获取联系人姓名
字符串名称=cur1
.getString(cur1)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DISPLAY_NAME));
//Log.e(“名称:”,名称);
字符串email=cur1
.getString(cur1)
.getColumnIndex(ContactsContract.CommonDataTypes.Email.DATA));
//Log.e(“电子邮件”,电子邮件);
contactsEntityBean.setName(名称);
contactsEntityBean.setEmail(电子邮件);
如果(电子邮件!=null){
contactList.add(contactsEntityBean);
}
}
cur1.close();
}
}
返回联系人列表;
}
这个方法是从同一个用户返回多个联系人,假设我已经存储了abc@gmail.com,abc@gmail.com对于同一个用户,它将返回abc@gmail.com& abc@gmail.com
但我只想要一张唱片abc@gmail.com
public static ArrayList<SearchEntityBean> getContactEmailDetails(
Context mContext) {
ArrayList<SearchEntityBean> contactList = new ArrayList<SearchEntityBean>();
try {
ContentResolver cr = mContext.getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String email = "";
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);
SearchEntityBean contactsEntityBean = new SearchEntityBean();
while (cur1.moveToNext()) {
// to get the contact names
String name = cur1
.getString(cur1
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String image = cur1
.getString(cur1
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_ID));
String mail = cur1
.getString(cur1
.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
if (mail != null) {
if (!mail.equalsIgnoreCase(LoginPreferenceClass
.getEmailID(mContext)))
email = email + mail + ",";
}
// Log.e("rohit", "Contact Email :" + email);
contactsEntityBean.setName(name);
contactsEntityBean.setImage(image);
}
if (email != null) {
if (email.length() > 0) {
if (email.split(",").length > 1) {
contactsEntityBean.setMutipleEmail(true);
}
contactsEntityBean.setUserType("2");
contactsEntityBean.setContactId(id);
contactsEntityBean.setEmail(email);
contactList.add(contactsEntityBean);
}
}
cur1.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
HashSet<SearchEntityBean> hs = new HashSet<SearchEntityBean>();
hs.addAll(contactList);
contactList.clear();
contactList.addAll(hs);
return contactList;
}
publicstaticarraylistgetcontactemaildetails(
上下文(mContext){
ArrayList contactList=新建ArrayList();
试一试{
ContentResolver cr=mContext.getContentResolver();
Cursor cur=cr.query(Contacts contract.Contacts.CONTENT\u URI,null,
空,空,空);
如果(cur.getCount()>0){
while(cur.moveToNext()){
字符串email=“”;
字符串id=cur.getString(cur
.getColumnIndex(Contacts contract.Contacts._ID));
游标cur1=cr.query(
ContactsContract.CommonDataTypes.Email.CONTENT\u URI,
无效的
ContactsContract.CommonDataTypes.Email.CONTACT\u ID
+“=?”,新字符串[]{
身份证件
},空);
SearchEntityBean ContactSenityBean=新的SearchEntityBean();
while(cur1.moveToNext()){
//获取联系人姓名
字符串名称=cur1
.getString(cur1)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DISPLAY_NAME));
字符串image=cur1
.getString(cur1)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.PHOTO_ID));
字符串mail=cur1
.getString(cur1)
.getColumnIndex(ContactsContract.CommonDataTypes.Email.DATA));
如果(邮件!=null){
如果(!mail.equalsIgnoreCase(LoginReferenceClass
.getEmailID(mContext)))
电子邮件=电子邮件+邮件+“,”;
}
//Log.e(“rohit”,“联系电子邮件:”+电子邮件);
contactsEntityBean.setName(名称);
setImage(image);
}
如果(电子邮件!=null){
如果(email.length()>0){
如果(email.split(“,”).length>1){
contactsEntityBean.setMultipleEmail(true);
}
setUserType(“2”);
setContactId(id);
contactsEntityBean.setEmail(电子邮件);
contactList.add(contactsEntityBean);
}
}
cur1.close();
}
}
}捕获(例外e){
e、 printStackTrace();
}
HashSet hs=新的HashSet();
hs.addAll(联系人列表);
contactList.clear();
联系人列表。addAll(hs);
返回联系人列表;
}
将联系人保存在ArrayList中,然后从列表中删除重复的联系人。
删除重复元素的最简单方法是将内容添加到集合(不允许重复),然后将集合添加回ArrayList
像这样使用HashSet
ArrayList al = new ArrayList();
// add elements to al, including duplicates
HashSet hs = new HashSet();
hs.addAll(al);
al.clear();
al.addAll(hs);
您应该像下面那样修改您的
ContactsEntityBean
public class ContactsEntityBean {
private HashSet<String> emails = new HashSet<String>();
public void setEmail(String email) {
if (email == null)
return;
this.emails.add(email.trim());
}
public HashSet<String> getEmails() {
return this.emails;
}
}
而且不需要关心重复的内容。这将关系到所有的事情 一旦在您的ArrayList中添加了联系人电子邮件,请将
继续
,然后使用哈希集
而不是ArrayList
if (email != null) {
contactList.add(contactsEntityBean);
continue;
}
通过这样更改您的方法,您可以获得唯一一个不重复的联系人
public static ArrayList<ContactsEntityBean> getContactDetails(Context mContext) {
ArrayList<ContactsEntityBean> contactList = new ArrayList<ContactsEntityBean>();
ContentResolver cr = mContext.getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, null);
HashMap<String, String> data = new HashMap<String, String>();
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()) {
ContactsEntityBean contactsEntityBean = new ContactsEntityBean();
// 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));
if (!data.containsValue(email)) {
// Log.e("Email", email);
contactsEntityBean.setName(name);
contactsEntityBean.setEmail(email);
data.put(name, email);
if (email != null) {
contactList.add(contactsEntityBean);
}
}
}
cur1.close();
}
}
return contactList;
}
publicstaticarraylistgetcontactdetails(Context-mContext){
ArrayList contactList=新建ArrayList();
C
public static ArrayList<ContactsEntityBean> getContactDetails(Context mContext) {
ArrayList<ContactsEntityBean> contactList = new ArrayList<ContactsEntityBean>();
ContentResolver cr = mContext.getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, null);
HashMap<String, String> data = new HashMap<String, String>();
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()) {
ContactsEntityBean contactsEntityBean = new ContactsEntityBean();
// 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));
if (!data.containsValue(email)) {
// Log.e("Email", email);
contactsEntityBean.setName(name);
contactsEntityBean.setEmail(email);
data.put(name, email);
if (email != null) {
contactList.add(contactsEntityBean);
}
}
}
cur1.close();
}
}
return contactList;
}
private void getContactDetails(ContentResolver contentResolver) {
Cursor phones = contentResolver.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
null, null);
HashSet<String> mobileNoSet = new HashSet<String>();
while (phones.moveToNext()) {
String name = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String email = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS));
String imagUri = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Photo.PHOTO_URI));
long id = phones.getColumnIndex(ContactsContract.Contacts._ID);
if (!mobileNoSet.contains(phoneNumber)) {
arrayContacts.add(new Contact(name, phoneNumber, email,
imagUri, id));
mobileNoSet.add(phoneNumber);
}
}
adapterContact = new AdapterContact(getActivity(), arrayContacts);
listContact.setAdapter(adapterContact);
}
// Hash Maps
Map<String, String> nameEmailMap = new HashMap<String, String>();
// Enter Into Hash Map
nameEmailMap.put(email, name);
// Get The Contents of Hash Map in Log
for (Map.Entry<String, String> entry : namePhoneMap.entrySet()) {
String key = entry.getKey();
Log.d(TAG, "Phone :" + key);
String value = entry.getValue();
Log.d(TAG, "Name :" + value);
}
fun fetchContacts(): List<UserObject> {\
val contacts: ArrayList<UserObject> = ArrayList()
val mobileNoSet = HashSet<String>()
val cursor= requiredContext()?.contentResolver?.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,arrayOf(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone.PHOTO_URI),null,null,"DISPLAY_NAME ASC")
while (cursor!!.moveToNext()) {
val index = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)
val numberIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)
val photoIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_URI)
val strName = cursor.getString(index)
var number = cursor.getString(numberIndex)
number = number.replace(" ", "")
val photo = cursor.getString(photoIndex)
if ((number.startsWith("03") || number.startsWith("92")||number.startsWith("+92")) && !mobileNoSet.contains(number)) {
contacts.add(UserObject(photo,strName,number))mobileNoSet.add(number)
}
}
return contacts
}