How to get a email for particualr phone number

匿名 (未验证) 提交于 2019-12-03 02:23:02

问题:

I want get a email for a particular phone number.

Here is my code

private static String getEmailAndName(String number, Context context) {         String selection = ContactsContract.CommonDataKinds.Phone.NUMBER+" like'%" + number +"%'";         String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.DATA};         Cursor c = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, selection, null, null);          String aniName = "";         if (c.moveToNext()) {             aniName = c.getString(0);             Log.e(TAG, "Name ====== "+c.getString(0));             Log.e(TAG, "Email ====== "+c.getString(1));             Log.e(TAG, "Email ====== "+c.getString(2));         }         return aniName;     } 

But It does not returns email ID. Please help me. Thank you.

回答1:

Here is the solution:

public static String[] getContactInfo(String phoneNumber, Context context) {         String info[] = new String[2];          ContentResolver mResolver = context.getContentResolver();         Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));          Cursor cursor = mResolver.query(uri, new String[] {                 ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.PhoneLookup._ID }, null, null, null);          String contactId = "";         if (cursor.moveToFirst()) {             do {                 contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup._ID));             } while (cursor.moveToNext());         }          //Get Name....         String[] projection = new String[] { ContactsContract.Contacts.DISPLAY_NAME };         cursor = mResolver.query(ContactsContract.Contacts.CONTENT_URI, projection,                 ContactsContract.Contacts._ID + "=?", new String[]{contactId}, null);          String name = "";         if (cursor.moveToFirst()) {             name = cursor.getString(0);         }          //Get Email Address....         cursor = mResolver.query(                 ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,                 ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",new String[]{contactId}, null);         String email="";         while (cursor.moveToNext())         {             email = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));             int emailType = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));         }         cursor.close();         info[0] = name;         info[1] = email;         return info;     } 


回答2:

To get the email address stored of a particular contact in phone book. This code works for me:

private Button btn; private String TAG = "Contacts"; private static final int RESULT_PICK_CONTACT = 1;   btn.setOnClickListener(new View.OnClickListener() {         @Override     public void onClick(View v) {     selectSingleContact();     } });  private void selectSingleContact() {        Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.Phone.CONTENT_URI);     startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT); }  @Override public void onActivityResult(int requestCode, int resultCode, Intent data) {     // check whether the result is ok     if (resultCode == RESULT_OK) {         // Check for the request code, we might be usign multiple startActivityForResult         switch (requestCode) {             case RESULT_PICK_CONTACT:                 contactPicked(data);                 break;         }     } else {         Log.e("ContactFragment", "Failed to pick contact");     } }  private void contactPicked(Intent data) {      Uri uri = data.getData();     Log.i(TAG, "contactPicked() uri " + uri.toString());     Cursor cursor;     ContentResolver cr = getActivity().getContentResolver();      try {         Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);         if (null != cur && cur.getCount() > 0) {             cur.moveToFirst();             for (String column : cur.getColumnNames()) {                 Log.i(TAG, "contactPicked() Contacts column " + column + " : " + cur.getString(cur.getColumnIndex(column)));             }         }          if (cur.getCount() > 0) {           //Query the content uri             cursor = getActivity().getContentResolver().query(uri, null, null, null, null);              if (null != cursor && cursor.getCount() > 0) {                 cursor.moveToFirst();                 for (String column : cursor.getColumnNames()) {                     Log.i(TAG, "contactPicked() uri column " + column + " : " + cursor.getString(cursor.getColumnIndex(column)));                 }             }              cursor.moveToFirst();             id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));             Log.i(TAG, "contactPicked() uri id " + id);             String contact_id = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));             Log.i(TAG, "contactPicked() uri contact id " + contact_id);             // column index of the contact name             name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));             // column index of the phone number             phoneNo = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));             //get Email id of selected contact....             Log.e("ContactsFragment", "::>> " + id + name + phoneNo);              Cursor cur1 = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,                     ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{contact_id}, null);              if (null != cur1 && cur1.getCount() > 0) {                 cur1.moveToFirst();                 for (String column : cur1.getColumnNames()) {                     Log.i(TAG, "contactPicked() Email column " + column + " : " + cur1.getString(cur1.getColumnIndex(column)));                     email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));                 }                 //Here you get name, number & email...                 Log.e("setcontactDetails","::>>" + name+"\nPhoneno:" + phoneNo+"\nEmail: " + email);             } else {                  Log.e("setcontactDetails","::>>" + name+"\nPhoneno:" + phoneNo+"\nEmail: " + email);             }         }     } catch (IndexOutOfBoundsException e) {         e.printStackTrace();     } } 

Also add permissions to AndroidManifest.xml



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!