2013-08-07 69 views
2

我有以下代码从联系人获取电子邮件地址它从联系人获取所有电子邮件地址,但我想要特定联系人电子邮件地址我提到了一些在stackoverflow中的答案,但不满意。如何从特定联系人获取电子邮件ID

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

您可以比较像下面这样你可以得到的电子邮件ID的GET_NAME和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

相关问题