2013-08-07 5 views
2

У меня есть следующий код, чтобы получить адрес электронной почты от контакта, чтобы получить все электронные письма от контакта, но я хочу конкретный контактный адрес электронной почты id Я упомянул о некотором ответе в stackoverflow, но не удовлетворяют.Как получить идентификатор электронной почты от конкретного контакта

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.update_contact); 
    update_contacts = (Button) findViewById(R.id.button1); 
    update_name = (EditText) findViewById(R.id.update_name); 
    update_phonenumber = (EditText) findViewById(R.id.update_phonenumber); 
    Bundle extras = getIntent().getExtras(); 
    get_name = extras.getString("contact_name"); 
    update_name.setText(get_name); 


    ContentResolver cr = getContentResolver(); 

/* получить контактный номер для имени отображения */

  Cursor pCur = cr.query(
     ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
     null, 
     ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME +" = ?", 
     new String[]{get_name}, null); 
     if(pCur.getCount() > 0){ 
      while (pCur.moveToNext()) { 
       id = pCur.getString(
         pCur.getColumnIndex(ContactsContract.Contacts._ID)); 
       String number = pCur.getString(
          pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       update_phonenumber.setText(number); 

      } 
     } 
     pCur.close(); 

/* get the email id for the display name */ 

     Cursor emailCur = cr.query( 
       ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
       null, 
       ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
       new String[]{String.valueOf(id)}, null); 

      if(emailCur.getCount() > 0){ 

       while (emailCur.moveToNext()) { 
        String email = emailCur.getString(
            emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
        String emailType = emailCur.getString(
            emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
        Toast.makeText(getApplicationContext(), ""+email, Toast.LENGTH_LONG).show(); 
       } 
      } 
      emailCur.close(); } 
+0

Почему вы не удовлетворяете? –

+0

@PankajKumar Это не дает никаких результатов, как мой второй код. – Arut

+0

напишите ваш полный код, это будет полезно. – Aravin

ответ

2

Вы можете сравнить get_name и имя поля, как следующим образом вы можете получить электронный идентификатор.

Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, 
       null, null, null); 

     if (cur.getCount() > 0) { 
      while (cur.moveToNext()) { 
       String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
       String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

       Cursor emailCur = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id},null); 
       while (emailCur.moveToNext()) { 
         String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
         if(get_name.equals(name)) { 
          Log.e("Email id",email); 
         } 
        } 
        emailCur.close(); 
       } 

      } 
+0

Я попробую это. – Arut

+0

Да, вы решили мою проблему, спасибо. – Arut