Can't get email address from contact

Kullaberg

New member
Mar 10, 2013
1
0
0
Visit site
Hi! This is my first post in this forum and I'm hoping for some help to solve my problem! The problem that I have is, that I can't get the email address from the ContactContract! The name and number works fine, but not the email address! I have been trying to solve this for days, but I don't know whats wrong or if I have missed something in my code!? I preciate help to be able to run my code! Perhaps there is a better way compared to my code? Please help me to improve my code or how to do it in another way!

This part of the code has a listview of names from the ContactContract. When the user select a name, the code should gather some information like the name, number and email address from the ContactsContract. Since the toast message inside the while loop never shows, I guess the problems has to do with the emails cursor!? Perhaps it's empty?

Help is preciated! Thanks!

Code:
public class Activity_3 extends Activity {

	ListView listView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.activity_3);
		listView = (ListView) findViewById(R.id.contactList);

		String[] projection = { ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
				ContactsContract.CommonDataKinds.Phone.NUMBER,
				ContactsContract.CommonDataKinds.Phone._ID };

		Cursor cursor1 = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, null, null, null);
	
		// From column
		String[] fromColumn = { ContactsContract.Contacts.DISPLAY_NAME };
		// To view
		int[] toView = { R.id.contactItem };

		startManagingCursor(cursor1);

		ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.activity_3, cursor1, fromColumn, toView);

		listView.setAdapter(adapter);

		listView.setOnItemClickListener(new OnItemClickListener() {

			public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {

				String[] projection = { ContactsContract.CommonDataKinds.Phone._ID, 
						ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
						ContactsContract.CommonDataKinds.Phone.NUMBER,
						};

				Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, null, null, null);
				
				cursor.moveToPosition(position);
				
				String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
				String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
				String contactNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
				
				String pos = Integer.toString(position);
				
				String contactEmailAddress = "?";	
				//Email
				Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + "=" + contactId, null,  null);
				
				while(emails.moveToNext()){
					contactEmailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
					Toast.makeText(Activity_3.this, contactEmailAddress, Toast.LENGTH_SHORT).show();
				}
				emails.close();
				
				Toast.makeText(Activity_3.this, pos + " " + contactId + " " + contactName + " " + contactNumber + " " + contactEmailAddress, Toast.LENGTH_SHORT).show();
			}
		});
	}
}