Reputation: 520
I am posting my code here. Please help me to get the email address of the contact. Also I am getting a random list; please help me to sort the data as well.
package com.example.webwerks.retrievingcontactsdemo;
import android.app.Activity;
import android.app.ListActivity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import java.util.ArrayList;
public class MyActivity extends Activity {
private String name;
private String Number;
private String alternateNumber;
private String email_id;
RelativeLayout relativeLayout;
ListView listView;
ArrayList <String> arrayList = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
listView = (ListView)findViewById(android.R.id.list);
getInformation(this.getContentResolver());
// relativeLayout = (RelativeLayout)findViewById(R.id.layoutRelative);
}
public void getInformation(ContentResolver contentResolver){
Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
while (phones.moveToNext()){
name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
Number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
email_id = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
arrayList.add(name);
arrayList.add(Number);
arrayList.add(email_id);
}
phones.close();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayList);
listView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.my, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
This is my code. It gives me the contact name and contact number(primary) and email id column. Also, it shows me the contact number only. And the data is not sorted according to my phone contact list. Please help. Thanks in advance :)
Upvotes: 2
Views: 178
Reputation: 7306
You need to execute another query using the id
to get Email
details of tat contact. SO check this code
public class ContactData
{
public String name;
public String email;
}
ArrayList<ContactData> data = new ArrayList<>();
public void getInformation(ContentResolver contentResolver){
Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
while (phones.moveToNext()){
String id = phones.getString(phones.getColumnIndex(ContactsContract.Contacts._ID));
Cursor cur1 = contentResolver.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){
Toast.makeText(this,
"Name : "+ name+" EMail : "+email, 1000)
.show();
}
}
dataList.add(contactData);
cur1.close();
}
phones.close();
}
Upvotes: 2
Reputation: 229
cursor = context.getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
cursor.moveToFirst();
for (int i = 0; i < cursor.getCount(); i++) {
contact = getContact(cursor, context.getContentResolver());
cursor.moveToNext();
}
private Contact getContact(Cursor cur , ContentResolver cr){
String contactID = cur.getString(cur
.getColumnIndex(ContactsContract.Contacts._ID));
if (contactID != null)
{
// for reading all contact
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
new String[]{contactID}, null);
while (pCur.moveToNext()) {
String contactNumber = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String contact_Number_Type = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
contact.setContact_Number(contactNumber);
contact.setContact_Number_Type(contact_Number_Type);
}
pCur.close();
// for reading all email id
Cursor emailCur = cr.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[]{contactID}, null);
while (emailCur.moveToNext()) {
String emailContact = emailCur
.getString(emailCur
.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
String emailType = emailCur
.getString(emailCur
.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
contact.setContact_Email(emailContact);
contact.setContact_Email_Type(emailType);
}
emailCur.close();
}
}
Here Contact is a bean class
Upvotes: 0