获取默认设置联系电子邮件? Android以编程方式?

时间:2016-10-19 21:01:15

标签: android android-contacts

我有联系方式。它有3封电子邮件。我将第二封电子邮件保存为默认的联系电子邮件。如何以编程方式获取该默认电子邮件?请帮忙。谢谢你

<Question>

enter image description here

Here is the email string of the contact

enter image description here

3 个答案:

答案 0 :(得分:1)

您要查找的字段是IS_SUPER_PRIMARY,这是获取联系人默认电子邮件的代码:

long contactId = <your contact id>;
Cursor c = getContentProvider().query(Email.CONTENT_URI, new String[] { Email.ADDRESS }, Email.CONTACT_ID + " = " + contactId + " AND " + Email.IS_SUPER_PRIMARY + " = 1", null, null);
if (c != null && c.moveToFirst()) {
   Log.d(TAG, "email = " + c.getString(0));
}

答案 1 :(得分:0)

不确定是否有办法以编程方式获取默认电子邮件,除非您授予用户选择电子邮件帐户的权限,通常,用户的第一封电子邮件通常是默认电子邮件,但并非总是如此。

如果您仍想使用第一封电子邮件,只需从返回的电子邮件帐户列表中返回第一封邮件

你可以这样做

       public  String  getUserAccount(){
        AccountManager am = AccountManager.get(this);
        Account[] accounts = am.getAccounts();
        ArrayList<String> googleAccounts = new ArrayList<String>();
        for (Account ac : accounts)
        {
            String acname = ac.name;
            String actype = ac.type;
            //add only google accounts
            if(ac.type.equals("com.google"))  googleAccounts.add(ac.name);
        }
            String primaryAccount = googleAccounts.get(0);
         return primaryAccount;
      }
     

这将返回第一封谷歌电子邮件

答案 2 :(得分:0)

Cursor c = getContentProvider().query(Email.CONTENT_URI, new String[] { Email.ADDRESS }, Email.CONTACT_ID + " = " + contactId + " AND " + Email.IS_SUPER_PRIMARY + " = 1", null, null);
if (c != null && c.moveToFirst()) {
   Log.d(TAG, "email = " + c.getString(0));
}

IS_SUPER_PRIMARY是获得此功能的关键。希望这能解决你的问题