我正在使用这样的代码来使用内容提供商获取gmail电子邮件。我的问题是“fromAddress”字段包含发件人的姓名而不是发件人的电子邮件。例如,它将包含“John Doe”,但我想要“john.doe@somewhere.net”。
该字段中的名称是用户在其电子邮件客户端中设置的名称,它不是来自我的Android联系人。
这是我正在使用的代码:
ContentResolver resolver = context.getContentResolver();
cursor = resolver.query(Uri.parse("content://gmail-ls/conversations/myemail@gmail.com/", null, null, null, null);
cursor.moveToFirst();
String fromAddress = cursor.getString(cursor.getColumnIndexOrThrow("fromAddress")));
cursor.close();
我知道该电子邮件不在来自此URI的任何字段中。我尝试过这种URI:“content://gmail-ls/messages/myemail@gmail.com/39920384203052”,但它总是返回一个有0条记录的游标,用于有效的messageId。
请帮助我获取给定Gmail邮箱的发件人电子邮件...
谢谢!
答案 0 :(得分:2)
开始结果活动
Intent intent = new new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
OnActivityResult
Uri result = data.getData();
String con = result.getLastPathSegment();
cursor = getContentResolver().query(Phone.CONTENT_URI,
null, Phone.CONTACT_ID + "=?", new String[] { con },
null);
int id = cursor.getColumnIndex(Phone.DATA);
if(cursor.moveToFirst()){
String mail = cursor.getString(id);
Log.e("Email", mail);
}
答案 1 :(得分:0)
我无法找到有关Android的GMail内容提供商的任何文档,但这可能对您有帮助。
打开一个HttpRequest对象并在此处发送 - https://mail.google.com/mail/feed/atom一旦您进行身份验证(标准HTTP身份验证),您就应该获得收件箱的XML Feed。
从那里你可以解析它。您要查找的字段是entry-> author-> email。
希望这有帮助!