Je travaille sur une application qui inclut également la gestion des contacts. J'ai essayé différentes méthodes Mais aucune d'entre elles n'a fonctionné. Je vais chercher des détails de contact dans un des fragments d'activité tabulés. Il récupère tous les autres détails correctement, sauf l'adresse e-mail du contact. Je ai compris la raison parce que ContactsContract.CommonDataKinds.Phone._ID
chercher différents ID que ContactsContract.CommonDataKinds.Email.CONTACT_ID
.. Maintenant, que dois-je code pour aller chercher tous les contacts du téléphone avec name
, number
, email
, photo_uri
. S'il vous plaît aidez! Voici mon morceau de code:Obtenir une valeur nulle lors de la récupération de l'adresse e-mail d'un contact
public class FragmentContacts extends Fragment{
ListView contacts;
ArrayList<String> namelist=new ArrayList<String>();
ArrayList<String> number=new ArrayList<String>();
ArrayList<String> contact_id=new ArrayList<String>();
ArrayList<String> contact_image_uri=new ArrayList<String>();
ArrayList<String> contact_email=new ArrayList<String>();
String[] sortImage;
ImageButton addContact;
String email;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_contacts, container, false);
contacts=(ListView)rootView.findViewById(R.id.contact_list);
addContact=(ImageButton)rootView.findViewById(R.id.add_contact);
namelist.clear();
getContacts();
addContact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNewContact();
}
});
return rootView;
}
public void getContacts() {
ContentResolver cr = getActivity().getApplicationContext().getContentResolver();
Cursor managedCursor = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.Phone._ID, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone.PHOTO_URI}, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " COLLATE NOCASE ASC");
while (managedCursor.moveToNext()) {
String id = managedCursor.getString(0);
String name = managedCursor.getString(1);
String phoneNumber = managedCursor.getString(2);
String image_uri=managedCursor.getString(3);
//email=managedCursor.getString(4);
email=getEmail(id);
System.out.println("Email is "+email);
contact_id.add(id);
// System.out.println("Id is "+id+" "+"Name is "+name);
namelist.add(name);
number.add(phoneNumber);
contact_image_uri.add(image_uri);
contact_email.add(email);
}
managedCursor.close();
ContactAdapter a = new ContactAdapter(getActivity(), contact_id, namelist, number,contact_image_uri,contact_email);
contacts.setAdapter(a);
}
public void addNewContact()
{
Intent in= new Intent(getContext(),AddContact.class);
startActivity(in);
}
private String getEmail(String contactId) {
String mailE=null;
ContentResolver cr = getActivity().getApplicationContext().getContentResolver();
Cursor cursor = cr.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID +" = ?",
new String[]{contactId}, null);
while (cursor.moveToNext())
{
mailE=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS));
System.out.println("In Between Email is "+mailE);
}
cursor.close();
return mailE;
}
}
Avez-vous essayé ce lien SO http://stackoverflow.com/questions/10117049/get-only-email-address-from- contact-list-android –
http://stackoverflow.com/questions/25717989/cannot-retrieve-email-from-contacts – kgandroid
Copie possible de [Obtenir uniquement l'adresse e-mail de la liste de contacts Android] (http://stackoverflow.com/ questions/10117049/get-only-email-address-from-contact-list-android) – Spartan