安卓手机如何开启邮件通知

3

我正在寻找一种以编程方式拦截Android手机上的所有接收邮件的方法,无论是来自gmail、exchange还是IMAP服务器。我的主要关注点在于查看邮件头而不是邮件正文。以下代码仅适用于GMail的情况:

ContentResolver cr = getContentResolver(); 
Cursor unread = cr.query(Uri.parse("content://gmail-ls/conversations/xxxxxx@gmail.com"), null, "label:^u", null, null); 
unread.moveToFirst(); 
int subjectIdx = unread.getColumnIndex("subject");

do {
  String subject = unread.getString(subjectIdx); 
} while (unread.moveToNext());

除此之外,还有这个答案。是否有类似的方法适用于非Gmail账户?理论上我知道可以要求用户提供用户名和密码并通过IMAP连接,但从业务角度考虑,我不能这么做。

任何可行的解决方案都将受到欢迎,例如Java SDK、NDK、未记录的API或任何必要的手段。


1
你面临的问题是无法保证用户使用默认的邮件客户端。我使用K9邮件,它使用自己的数据库,完全独立于原始邮件客户端,因此你所考虑的方法将会错过所有通过K9检索的电子邮件,在我的情况下也是如此。 - Mark Allison
@Mark - 我知道,但我们从默认的开始。 - David Rabinowitz
@Mark - 另外,我们知道如何使用K9来完成这个。 - David Rabinowitz
我只是以K9作为一个例子。为了涵盖每种可能性,你需要查看通过Android市场和其他来源可用的每个可能的电子邮件客户端,并设计一种处理每个客户端的方法。这是很多工作,也很复杂。 - Mark Allison
@Mark - 你说得没错,但这是一个ROI的问题。例如,K9(非常粗略地)比MailDroid流行大约10倍。随着时间的推移,我们将赚取用户使用的东西并进行适应。 - David Rabinowitz
1个回答

0

回答自己的问题:

Google已经为GMail Rest API发布了推送通知。我没有使用过它,但文档在这里

旧答案

有两种方法可以实现此目的:

  • 使用GMail收件箱Feed - 这是一个Atom Feed,您可以使用OAuth访问它。它仅显示收件箱中未读的项目,因此非常有限。
  • 使用GMail IMAP扩展,并使用IMAP和OAuth连接。在这里,您可以访问整个用户邮箱。

这两种方法都有拉取而不是推送的限制。我怀疑(尽管我没有尝试过)IMAP推送不起作用,在任何情况下,我也不会在移动设备上信任它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接