gpt4 book ai didi

android - 获取所有联系人并获取所有类型的单个联系人姓名

转载 作者:行者123 更新时间:2023-11-29 02:41:05 26 4
gpt4 key购买 nike

获取所有类型的(单个)联系人

i m getting All Contact with All type of a single contact And i succeeded But When print innerlist(multiple type phone number contain) it print last added contact for according to the size of innerlist for that single contact.....(didn't get read example)

示例

for ex: Contact Name:ABC TYPES OF NUMBERS 3 MOBILE:123 , HOME:456 ,OFFICE:789 SO THIS CODE for (int i = 0; i < numberlist.size(); i++) {
Log.e("inner", numberlist.get(i).getName() + " number " + numberlist.get(i).getNumber());
}

Will print(thrice but same contact number) (inner,ABC number 789);

pojo 类

public class ContactClass extends RealmObject  {
@PrimaryKey
String id;
String name;
String number;
RealmList<ContactClass> numberlist;

public String getNumber() {
return number;
}

public void setNumber(String number) {
this.number = number;
}


public ContactClass() {
}

public RealmList<ContactClass> getNumberlist() {
return numberlist;
}

public void setNumberlist(RealmList<ContactClass> numberlist) {
this.numberlist = numberlist;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}


public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

我想要的结果

i want to save contact name and all type of numbers of that single name..

我试过的代码

 public void loadContact() {
//swipeRefreshLayout.setRefreshing(true);
RealmList<ContactClass> list = new RealmList<>();
PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();


ContentResolver cr = getActivity().getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
RealmList<ContactClass> numberlist = new RealmList<>();
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

ContactClass contactClass = new ContactClass();
contactClass.setId(id);
contactClass.setName(name);
if (cur.getInt(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));
int type = pCur.getInt(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
// Log.e("called", phoneNo + " " + name + " " + id);
switch (type) {

case ContactsContract.CommonDataKinds.Phone.TYPE_HOME:
try {
if (phoneNo.equals("") || phoneNo != null) {
contactClass.setNumber(phoneNo);
Log.e("test", phoneNo + " name " + name+" type "+"home");
numberlist.add(contactClass);
}


} catch (Exception e) {
Log.d(TAG, e.toString());
}


break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE:
try {
if (phoneNo.equals("") || phoneNo != null) {
contactClass.setNumber(phoneNo);
Log.e("test", phoneNo + " name " + name+" type "+"mobile");
numberlist.add(contactClass);
}
} catch (Exception e) {
Log.d(TAG, e.toString());
}


break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK:
try {
if (phoneNo.equals("") || phoneNo != null) {
contactClass.setNumber(phoneNo);
Log.e("test", phoneNo + " name " + name+" type "+"work");
numberlist.add(contactClass);
}


} catch (Exception e) {
Log.d(TAG, e.toString());
}

break;
case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME:
try {
if (phoneNo.equals("") || phoneNo != null) {
contactClass.setNumber(phoneNo);
Log.e("test", phoneNo + " name " + name+" type "+"eaxhome");
numberlist.add(contactClass);
}
} catch (Exception e) {
Log.d(TAG, e.toString());
}

break;
case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK:
try {
if (phoneNo.equals("") || phoneNo != null) {
contactClass.setNumber(phoneNo);
Log.e("test", phoneNo + " name " + name+" type "+"faxwork");
numberlist.add(contactClass);
}
} catch (Exception e) {
Log.d(TAG, e.toString());
}

break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MAIN:
try {
if (phoneNo.equals("") || phoneNo != null) {
contactClass.setNumber(phoneNo);
Log.e("test", phoneNo + " name " + name+" type "+"main");
numberlist.add(contactClass);
}
} catch (Exception e) {
Log.d(TAG, e.toString());
}

break;
case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER:
try {

if (phoneNo.equals("") || phoneNo != null) {
contactClass.setNumber(phoneNo);
Log.e("test", phoneNo + " name " + name+" type "+"home");
numberlist.add(contactClass);
}
} catch (Exception e) {
Log.d(TAG, e.toString());
}

break;
case ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM:
try {
if (phoneNo.equals("") || phoneNo != null) {
contactClass.setNumber(phoneNo);
Log.e("test", phoneNo);
numberlist.add(contactClass);
}
} catch (Exception e) {
Log.d(TAG, e.toString());
}

break;
case ContactsContract.CommonDataKinds.Phone.TYPE_PAGER:
try {
if (phoneNo.equals("") || phoneNo != null) {
contactClass.setNumber(phoneNo);
Log.e("test", phoneNo);
numberlist.add(contactClass);
}
} catch (Exception e) {
Log.d(TAG, e.toString());
}

break;
}
}
pCur.close();

/* HashSet<ContactClass> h = new HashSet<>();
h.addAll(numberlist);
numberlist.clear();
numberlist.addAll(h);*/
contactClass.setNumberlist(numberlist);
list.add(contactClass);
for (int i = 0; i < numberlist.size(); i++) {
Log.e("inner", numberlist.get(i).getName() + " number " + numberlist.get(i).getNumber());
}

}//1637

}
// saveToRealm(list);
/* try {
HashSet hs = new HashSet();

hs.addAll(list); // demoArrayList= name of arrayList from which u want to remove duplicates
List<ContactClass> classList = new ArrayList<>();
list.clear();
classList.addAll(hs);
saveToRealm(classList);
Log.e("resize", classList.size() + "");
} catch (Exception e) {
Log.d("savetorealm", "catch " + e.toString());
}*/
}
}

最佳答案

如果一个联系人有 2 个或更多电话号码,您将为同一个联系人创建多个 ContactClass

尝试将主循环更改为:

// this loop iterates once per contact
while (cur.moveToNext()) {
if (cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)) > 0) {
RealmList<ContactClass> numberlist = new RealmList<>();
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

// create a new ContactClass just once per contact
ContactClass contactClass = new ContactClass();
contactClass.setId(id);
contactClass.setName(name);

Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
new String[]{id}, null);
// this loop iterates once per phone for each contact
while (pCur.moveToNext()) {

String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
int type = pCur.getInt(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
Log.e("called", phoneNo + " " + name + " " + id);
switch (type) {
...
}
}
pCur.close();

// add the new ContactClass just once per contact to list
contactClass.setNumberlist(numberlist);
list.add(contactClass);

for (int i = 0; i < numberlist.size(); i++) {
Log.e("numbersize", numberlist.get(i).getNumber() + numberlist.get(i).getName() + numberlist.size() + "");
}

}
}

关于android - 获取所有联系人并获取所有类型的单个联系人姓名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44096207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com