2011-05-11 117 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

相關問題