【发布时间】:2017-07-17 15:30:57
【问题描述】:
我正在创建一个应用程序,我想在其中阅读所有电子邮件并希望在列表视图中显示。我一直在寻找,但找不到任何合适的方法。我试过下面的代码:
private static final String[] PROJECTION = new String[] {
ContactsContract.CommonDataKinds.Email.CONTACT_ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Email.DATA
};
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, PROJECTION, null, null, null);
if (cursor != null) {
try {
final int contactIdIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.CONTACT_ID);
final int displayNameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
final int emailIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA);
long contactId;
String displayName, address;
while (cursor.moveToNext()) {
contactId = cursor.getLong(contactIdIndex);
displayName = cursor.getString(displayNameIndex);
address = cursor.getString(emailIndex);
}
} finally {
cursor.close();
}
}
但它返回电子邮件地址,如果我想阅读实际的电子邮件怎么办?有什么办法吗? Android API 会公开这个吗?还有一件事,在一个地方我发现下面的方法来获取电子邮件
ContentResolver resolver = getContentResolver();
Uri uriGmail = Uri.parse("content://gmail/");
Cursor cursor = resolver.query(uriGmail, null, null, null, null);
但是游标返回空值。我相信没有办法从 Android 设备读取电子邮件。可能是电子邮件保存在该应用程序(比如说 Gmail 应用程序)的本地存储(数据库)中。我进一步探索了下面链接中提到的 Android 文档,但找不到方法。 https://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Email.html
提前致谢。
【问题讨论】:
-
找到解决方案了吗?