【问题标题】:get Email Address from contact list从联系人列表中获取电子邮件地址
【发布时间】:2012-07-26 12:14:52
【问题描述】:

我通过

获取联系人列表

权限

android:name="android.permission.READ_CONTACTS"


Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);

但是如何从

获取电子邮件地址
 public void onActivityResult(int reqCode, int resultCode, Intent data) {
//what should i have to write to fetch email address of selected contact
// I wrote like below but i could not get result

 if (resultCode == Activity.RESULT_OK) {  
     try{
             Uri contactData = data.getData();

             Cursor cursorEmail = getContentResolver().query(contactData,null,null,null,null);
             cursorEmail.moveToFirst();
             String emailAdd =  cursorEmail.getString(cursorEmail.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS));
             Toast.makeText(MySettings.this, emailAdd, Toast.LENGTH_LONG).show();
          }catch(Exception e){
              Toast.makeText(MySettings.this, "No Email Add found", Toast.LENGTH_LONG).show();
          }

}

但问题是我没有从选定的联系人列表中获取电子邮件地址,所以任何人都可以给我解决方案

【问题讨论】:

    标签: android android-intent android-contacts


    【解决方案1】:

    您可以使用以下代码检索电子邮件。

    public ArrayList<String> ShowContact() {        
    
        nameList = new ArrayList<String>();
                phoneList = new ArrayList<String>();
                emailList = new ArrayList<String>();
    
        ContentResolver cr = getContentResolver();
        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));
                if (Integer
                        .parseInt(cur.getString(cur
                                .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
                    // Query phone here. Covered next
    
                    Cursor pCur = cr.query(
                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                            null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                    + " = ?", new String[] { id }, null);
                    while (pCur.moveToNext()) {
                        // Do something with phones
                        String phoneNo = pCur
                                .getString(pCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
    
                        nameList.add(name); // Here you can list of contact.
                            phoneList.add(phoneNo); // Here you will get list of phone number.                  
    
    
                        Cursor emailCur = cr.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));                            
    
                     emailList.add(email); // Here you will get list of email    
    
                            } 
                            emailCur.close();       
                    }
                    pCur.close();
                }
            }
        }
    
        return nameList; // here you can return whatever you want.
    }
    

    【讨论】:

    • 您好 Akshay 先生,我已经使用了您的代码,但仍然出现错误 Cursor cursorContacts = managedQuery(contactData, null, null, null, null);字符串 id = cursorContacts.getString(cursorContacts.getColumnIndex(ContactsContract.Contacts._ID));光标 emailCur = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",new String[]{id}, null);
    • @user1545066 错误是什么。如果您在模拟器上进行测试,请确保您已在模拟器中添加了电子邮件地址的联系人。
    • @user1545066 我已经更改了我的帖子,请找到更改。让我知道它是否有效。
    • 我只想从列表中检索选定的记录。因为我在列表中有多个记录。请提供解决方案。
    【解决方案2】:

    获取所选联系人的电子邮件 ID 的功能

    private void retrieveContactEmail()
    {
        Cursor cursorID = getContentResolver().query(uriContact,
            new String[]{ContactsContract.Contacts._ID},
            null, null, null);
    
        if (cursorID.moveToFirst()) {
            contactID = cursorID.getString(
                cursorID.getColumnIndex(ContactsContract.Contacts._ID));
        }
    
        Cursor cursor = getContentResolver().query(
            ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, 
            ContactsContract.CommonDataKinds.Email.CONTACT_ID + "=?",
            new String[]{contactID}, null);
    
        int emailIdx = cursor.getColumnIndex(
            ContactsContract.CommonDataKinds.Email.DATA);
    
        if (cursor.moveToFirst()) {
            String emailg = cursor.getString(emailIdx);
    
            if(emailg!=null) {
                email.setText(emailg);
            }
            else {
                Toast.makeText(Activity.this,
                    "No email id for this contact",
                    Toast.LENGTH_LONG
                ).show();
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      使用

      String emailAdd =  cursorEmail.getString(cursorEmail.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
      

      而不是

      String emailAdd =  cursorEmail.getString(cursorEmail.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多