Android 如何获取存储在设备中的用户自己的电子邮件地址?

Android 如何获取存储在设备中的用户自己的电子邮件地址?,android,email,device,email-client,Android,Email,Device,Email Client,我需要检索存储在设备中的用户的所有电子邮件地址(不是他的朋友的电子邮件地址,而是他自己的电子邮件地址)。 例如,如果我有三个邮件地址geltrude@gmail.com, geltry@yahoo.co.uk和cippalippa@hotmail.com,我正在寻找一个方法,该方法返回一个包含以下三个字符串的数组(或类似数组):[”geltrude@gmail.com", "geltry@yahoo.co.uk", "cippalippa@hotmail.com"]. 有什么想法吗 编辑:我想获

我需要检索存储在设备中的用户的所有电子邮件地址(不是他的朋友的电子邮件地址,而是他自己的电子邮件地址)。 例如,如果我有三个邮件地址geltrude@gmail.com, geltry@yahoo.co.uk和cippalippa@hotmail.com,我正在寻找一个方法,该方法返回一个包含以下三个字符串的数组(或类似数组):[”geltrude@gmail.com", "geltry@yahoo.co.uk", "cippalippa@hotmail.com"]. 有什么想法吗

编辑:我想获得存储在设备“我”联系人中的电子邮件地址,以及存储在默认邮件应用程序和gmail客户端应用程序中的自己的电子邮件地址(我认为这是默认使用的应用程序)。 提前谢谢。
G.

这些地址中的大多数由电子邮件客户端维护,而这些客户端没有内容提供商可以获取它们

如果您的目标是使用地址列表来选择发送电子邮件的返回地址,那么这不符合Android的做法。您的应用程序应该通过抛出一个适当装备的
ACTION\u send
intent来宣布它想要发送电子邮件。无论应用程序最终提供什么服务,它都可以让用户选择在发送时使用哪个帐户和返回地址


增编:

默认电子邮件客户端有一个名为
content://com.android.email.provider/account
您不应该或不能使用,因为:

  • 这是无证的
  • 要求希望使用它的应用程序具有
    com.android.email.permission.ACCESS\u PROVIDER
    权限
  • 该权限具有
    signatureOrSystem
    protectionLevel
    ,该权限限制授予存储在系统映像中或使用与系统映像中相同密钥签名的应用。您的应用程序不太可能属于这两类
其他需要注意的事项:

  • 无法保证给定设备将支持电子邮件
  • 设备上的电子邮件可能由第三方电子邮件客户端(例如,K9、SEVEN、触地、MailDroid或其他)提供服务,该客户端维护自己的帐户数据库,并且可能不会公开该数据库

这些地址中的大多数由电子邮件客户端维护,而这些客户端没有内容提供商可以获取这些地址

如果您的目标是使用地址列表来选择发送电子邮件的返回地址,那么这不符合Android的做法。您的应用程序应该通过抛出一个适当装备的
ACTION\u send
intent来宣布它想要发送电子邮件。无论应用程序最终提供什么服务,它都可以让用户选择在发送时使用哪个帐户和返回地址


增编:

默认电子邮件客户端有一个名为
content://com.android.email.provider/account
您不应该或不能使用,因为:

  • 这是无证的
  • 要求希望使用它的应用程序具有
    com.android.email.permission.ACCESS\u PROVIDER
    权限
  • 该权限具有
    signatureOrSystem
    protectionLevel
    ,该权限限制授予存储在系统映像中或使用与系统映像中相同密钥签名的应用。您的应用程序不太可能属于这两类
其他需要注意的事项:

  • 无法保证给定设备将支持电子邮件
  • 设备上的电子邮件可能由第三方电子邮件客户端(例如,K9、SEVEN、触地、MailDroid或其他)提供服务,该客户端维护自己的帐户数据库,并且可能不会公开该数据库

当我在Android默认电子邮件客户端中设置新地址时,Gmail应用程序中也会自动设置此新地址。。。因此,我认为默认应用程序在某种程度上公开了我自己的电子邮件地址。请参阅我答案的附录。谢谢:那么“我”联系人的地址呢?也是未记录的。HTC和其他一两家公司都有“我”的实现,但并没有标准化。我能建议的最好的方法是使用一个首选项,将曾经的联系人指定为“我”,并从中提取电子邮件。我知道这里可能不存在,但可能是的。。。听着:我可以尝试获取SIM卡电话号码,然后从中选择联系人和他的电子邮件地址(如果有)。所以这个问题是:当我在安卓默认电子邮件客户端中设置一个新地址时,Gmail应用程序中也会自动设置这个新地址。。。因此,我认为默认应用程序在某种程度上公开了我自己的电子邮件地址。请参阅我答案的附录。谢谢:那么“我”联系人的地址呢?也是未记录的。HTC和其他一两家公司都有“我”的实现,但并没有标准化。我能建议的最好的方法是使用一个首选项,将曾经的联系人指定为“我”,并从中提取电子邮件。我知道这里可能不存在,但可能是的。。。听着:我可以尝试获取SIM卡电话号码,然后从中选择联系人和他的电子邮件地址(如果有)。所以这个问题: