在Kindle Fire上,是否可以获取用户的电子邮件地址?

7

这个问题讨论了Android设备的一般情况,但是如果您尝试在Kindle Fire上运行此代码,您只会得到用户的姓名。有没有办法获取电子邮件地址?我们希望弹出一个对话框,其中电子邮件地址已经预填,这样如果它正确,他们就不必输入它,但似乎唯一的解决方案是让他们重新输入。

编辑:这里是其他线程建议的代码(在Kindle Fire上无效):

Account[] accounts = AccountManager.get(this).getAccounts();
for (Account account : accounts) {
  // TODO: Check possibleEmail against an email regex or treat
  // account.name as an email address only for certain account.type values.
  String possibleEmail = account.name;
  // possibleEmail is a list of account names, hopefully including the @gmail.com address.
}

你还没有找到解决方案,是吗?我自己也遇到了这个问题。 - Cruceo
糟糕,我就怕出现这种情况...我的应用程序被一个用户侧载到Kindle上,但它只适用于普通的Android设备,并遇到了这个问题...我想唯一的解决方案就是允许用户使用其他身份识别方式,如果电子邮件不可用的话... - Cruceo
2个回答

0

在我可用的Fire设备上,我所做的是:

final static String TYPE_GOOGLE = "com.google";
final static String TYPE_AMAZON = "com.amazon";
final static String AMAZON_EMAIL = "com.amazon.pim";

public static String getAccountName(final Context context) {
    boolean amazon = TextUtils.equals(Build.MANUFACTURER, "Amazon");
    String type = amazon ? TYPE_AMAZON : TYPE_GOOGLE;
    String email = null;
    try {
        Account acc[] = AccountManager.get(context).getAccountsByType(type);
        if (acc.length > 0) {
            email = acc[0].name;
            for (int i = 0; i < acc.length; i++) {
                Account account = acc[i];
                if (amazon) {
                    // there are a lot of flags, just skip them
                    if (!TextUtils.equals(account.type, TYPE_AMAZON)) {
                        // is it an email account?
                        if (account.type.startsWith(AMAZON_EMAIL)) {
                            email = account.name;
                        }
                    }
                }
            }
        } else {
            acc = AccountManager.get(context).getAccounts();
            if (acc.length > 0) {
                // just return the first one...
                email = acc[0].name;
            }
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return email;
}

这也适用于Google Play设备。


AccountManager.get(context).getAccountsByType("com.amazon"); 在我的firestick上返回为空。 - smedasn

0
在Kindle Fire上,是否可以获取用户的电子邮件地址?
抱歉,但您完全错了。
我曾经链接到Google登录对话框,该对话框显示在Kindle Fire上存在的所有用户。
请按照此代码:
public class AuthAcount {
    private Context context;

    private AccountManager mAccountManager;

    public AuthAcount(Context context) {
            setContext(context);
    }

    public Account[] getAccount() {
            mAccountManager = AccountManager.get(context);
            Account[] accounts = mAccountManager
                            .getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
            return accounts;
    }

    public Context getContext() {
            return context;
    }

    public void setContext(Context context) {
            this.context = context;
    }
}

提示:如果要使用GoogleAuthUtil类,您可能需要google-oauth-client-1.15.0-rc.jar(请使用最新版本)。


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