如何在Android 2.0.1上获取电子邮件地址

时间:2010-01-13 23:40:04

标签: android email

我正在尝试从Android(2.0.1)上的联系人处获取电子邮件。我收不到电子邮件。我正在使用的代码是:

String columns = new String[]{ContactsContract.Data._ID, 
                              ContactsContract.Data.DATA1,  
                              ContactsContract.Data.DATA2,              
                              ContactsContract.Data.DATA3, 
                              ContactsContract.Data.DATA4,               
                              ContactsContract.Data.DATA5, 
                              ContactsContract.Data.DATA6,               
                              ContactsContract.Data.DATA7, 
                              ContactsContract.Data.DATA8,                
                              ContactsContract.Data.DATA9
                             };

Cursor cursor = contentResolver.query(ContactsContract.Data.CONTENT_URI, columns, null, null, null);

当我尝试获取列的值时,我得到null。我怎样才能收到这些电子邮件?也许CONTENT_URI不正确或数据存储在另一个表中,我必须进行连接。

4 个答案:

答案 0 :(得分:2)

我这样做了:

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));
                    String emailType = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
                } 
                emailCur.close();

工作正常。我希望它对另一个人有所帮助。

答案 1 :(得分:1)

我是这样做的,

String id = contactData.getLastPathSegment();

Cursor emailsCur = getContentResolver().query(Email.CONTENT_URI, null,
                            Email.CONTACT_ID + " = " + id, null, null);

while (emailsCur.moveToNext()) {               
      String email = emailsCur.getString(emailsCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));                     
}
emailsCur.close();

我希望它会对你有所帮助。

答案 2 :(得分:0)

答案 3 :(得分:0)

我用这种方式解决了问题:

private static final int SUBACTIVITY_VIEW_CONTACT = 2;
        .
        .
        .
Intent viewContactActivity =  new Intent(Intent.ACTION_VIEW, data.getData());
startActivityForResult(viewContactActivity , SUBACTIVITY_VIEW_CONTACT);        
        .
        .
        .

然后我可以在屏幕上看到联系人的所有电子邮件,就像我在联系人应用程序上单击联系人本身一样,但是当我点击任何电子邮件时,它显示为“不支持的操作。”操作是目前不支持“屏幕。有人知道吗? 感谢。