Access your contacts and get an email address

I have a code snippet for accessing contacts. When the user clicks the button, the contact list will be opened, and the user can select the person from the contacts, and the person’s email address should be recorded on edittext. I can receive an email from the people that the user selects. But I can not install it in edittext.

static String email = ""; imgbtnaddfromcontacts.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (v == imgbtnaddfromcontacts) { try { Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, 1); } catch (Exception e) { e.printStackTrace(); Log.e("Error in intent : ", e.toString()); } } } }); kimeTxt.setText(email); } @Override public void onActivityResult(int reqCode, int resultCode, Intent data) { super.onActivityResult(reqCode, resultCode, data); try { if (resultCode == Activity.RESULT_OK) { // Get data Uri contactData = data.getData(); // Cursor Cursor cur = managedQuery(contactData, null, null, null, null); ContentResolver contect_resolver = getContentResolver(); // List if (cur.moveToFirst()) { String id = cur .getString(cur .getColumnIndexOrThrow(ContactsContract.Contacts._ID)); Cursor phoneCur = contect_resolver.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null); Cursor emailCur = contect_resolver.query( ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[] { id }, null); if (phoneCur.moveToFirst()) { name = phoneCur .getString(phoneCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); no = phoneCur .getString(phoneCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } while (emailCur.moveToNext()) { // This would allow you get several email addresses // if the email addresses were stored in an array email = emailCur .getString(emailCur .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); if (email != null) { seciliEmail = email; } else { Toast.makeText(EpostaIletActivity.this, "Kişinin eposta hesabı bulunmamaktadır.", Toast.LENGTH_SHORT); Log.w("Error: ", "Kişinin eposta hesabı yok."); } } Log.e("Phone no & name & email :***: ", name + " : " + no + ":" + email); // txt.append(name + " : " + no + "\n"); id = null; name = null; no = null; seciliEmail = "xxx"; phoneCur = null; emailCur.close(); } contect_resolver = null; cur = null; // populateContacts(); } } catch (IllegalArgumentException e) { e.printStackTrace(); Log.e("IllegalArgumentException :: ", e.toString()); } catch (Exception e) { e.printStackTrace(); Log.e("Error :: ", e.toString()); } } 
+6
source share
3 answers

I use the code below to get the email address from the selected contact -

 public void doLaunchContactPicker(View view) { Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI); startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { switch (requestCode) { case CONTACT_PICKER_RESULT: Cursor cursor = null; String email = "", name = ""; try { Uri result = data.getData(); Log.v(DEBUG_TAG, "Got a contact result: " + result.toString()); // get the contact id from the Uri String id = result.getLastPathSegment(); // query for everything email cursor = getContentResolver().query(Email.CONTENT_URI, null, Email.CONTACT_ID + "=?", new String[] { id }, null); int nameId = cursor.getColumnIndex(Contacts.DISPLAY_NAME); int emailIdx = cursor.getColumnIndex(Email.DATA); // let just get the first email if (cursor.moveToFirst()) { email = cursor.getString(emailIdx); name = cursor.getString(nameId); Log.v(DEBUG_TAG, "Got email: " + email); } else { Log.w(DEBUG_TAG, "No results"); } } catch (Exception e) { Log.e(DEBUG_TAG, "Failed to get email data", e); } finally { if (cursor != null) { cursor.close(); } EditText emailEntry = (EditText) findViewById(R.id.editTextv); EditText personEntry = (EditText) findViewById(R.id.person); emailEntry.setText(email); personEntry.setText(name); if (email.length() == 0 && name.length() == 0) { Toast.makeText(this, "No Email for Selected Contact",Toast.LENGTH_LONG).show(); } } break; } } else { Log.w(DEBUG_TAG, "Warning: activity result not ok"); } } 

doLaunchContactPicker is onclick of Button Use the code wherever you want.

+22
source

make sure your application has permission, otherwise you will get strange Exceptions

in AndroidManifest.xml:

 <uses-permission android:name="android.permission.READ_CONTACTS" /> 
+3
source
 You can achieve it like this public class Abc extends Activity{ EditText kimeTxt; Intent i; Bundle b ; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.add_course); kimeTxt= (EditText)findViewById(R.id.emailid); } @Override public void onActivityResult(int reqCode, int resultCode, Intent data) { super.onActivityResult(reqCode, resultCode, data); try { if (resultCode == Activity.RESULT_OK) { // Get data Uri contactData = data.getData(); // Cursor Cursor cur = managedQuery(contactData, null, null, null, null); ContentResolver contect_resolver = getContentResolver(); // List if (cur.moveToFirst()) { String id = cur .getString(cur .getColumnIndexOrThrow(ContactsContract.Contacts._ID)); Cursor phoneCur = contect_resolver.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null); Cursor emailCur = contect_resolver.query( ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[] { id }, null); if (phoneCur.moveToFirst()) { name = phoneCur .getString(phoneCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); no = phoneCur .getString(phoneCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } while (emailCur.moveToNext()) { // This would allow you get several email addresses // if the email addresses were stored in an array email = emailCur .getString(emailCur .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); if (email != null) { seciliEmail = email; } else { Toast.makeText(EpostaIletActivity.this, "Kişinin eposta hesabı bulunmamaktadır.", Toast.LENGTH_SHORT); Log.w("Error: ", "Kişinin eposta hesabı yok."); } } Log.e("Phone no & name & email :***: ", name + " : " + no + ":" + email); // txt.append(name + " : " + no + "\n"); id = null; name = null; no = null; seciliEmail = "xxx"; phoneCur = null; emailCur.close(); } // can set email id here kimeTxt.setText(email); contect_resolver = null; cur = null; // populateContacts(); } } catch (IllegalArgumentException e) { e.printStackTrace(); Log.e("IllegalArgumentException :: ", e.toString()); } catch (Exception e) { e.printStackTrace(); Log.e("Error :: ", e.toString()); } } 
0
source

Source: https://habr.com/ru/post/915783/


All Articles