我有联系方式。它有3封电子邮件。我将第二封电子邮件保存为默认的联系电子邮件。如何以编程方式获取该默认电子邮件?请帮忙。谢谢你
<Question>
Here is the email string of the contact
答案 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是获得此功能的关键。希望这能解决你的问题