2011-05-11 70 views
0

我想从电话的联系人中生成电子邮件列表,但我在收取电子邮件方面遇到了问题。我可以获取姓名和电话号码,但不能发送电子邮件。 ArrayList的大小在循环结束时都是0。任何人都可以发现我做错了什么,或者告诉我电子邮件与电话号码,姓名和其他信息的区别?我无法从电话的联系人中加载电子邮件地址

ContentResolver cr = getContentResolver(); 

    Cursor emailCur = cr.query(
      ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, 
      ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
      null, null); 

    ArrayList<String> emails = new ArrayList<String>(); 
    ArrayList<String> emailTypes = new ArrayList<String>(); 

    while (emailCur.moveToNext()) { 
     // This would allow you get several email addresses 
     // if the email addresses were stored in an array 
     String email = emailCur 
       .getString(emailCur 
         .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
     String emailType = emailCur 
       .getString(emailCur 
         .getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 

     emails.add(email); 
     emailTypes.add(emailType); 

    } 

    emailCur.close(); 

    Log.i("Emails Count", Integer.toString(emails.size())); 
    for (int i = 0; i < emails.size(); i++) { 
     Log.i("Emails " + i, emails.get(i)); 
    } 

    Log.i("EmailTypes Count", Integer.toString(emailTypes.size())); 
    for (int i = 0; i < emailTypes.size(); i++) { 
     Log.i("EmailTypes " + i, emailTypes.get(i)); 
    } 

回答

2

使用此代码从设备获取电子邮件。

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

       emailIndex=0; 
       if (cur.getCount() > 0) 
       { 

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

         Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null, 
           ContactsContract.CommonDataKinds.Email.CONTACT_ID+ " = " + id, null, null); 
         while (emails.moveToNext()) 
         { 
          // This would allow you get several email addresses 
          String emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
          Log.v(name+"==>", emailAddress); 

         } 
         emails.close();   
        } 
        cur.close(); 
+0

这很好用。谢谢 – NotACleverMan 2011-05-11 10:16:11

相关问题