【问题标题】:On the Kindle Fire, is it possible to get a user's email address?在 Kindle Fire 上,是否可以获取用户的电子邮件地址?
【发布时间】:2012-03-23 23:41:26
【问题描述】:

This question 一般针对安卓设备讨论它,但是如果您尝试在 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.
}

【问题讨论】:

  • 您还没有找到解决方案,是吗?我自己也遇到了这个问题
  • 废话,我害怕...我的应用程序被 Kindle 上的用户侧载,仅适用于普通 Android 并遇到了这个问题...我想唯一的解决方案是我如果电子邮件不可用,则允许通过电子邮件以外的其他方式识别用户...

标签: android kindle-fire


【解决方案1】:

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

对不起,你完全错了。

曾经链接到显示所有用户都存在于 Kindle Fire 上的 Google 登录对话框。

请遵循此代码:

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;
    }
}

P/s : 要使用 GoogleAuthUtil 类,您可能需要 google-oauth-client-1.15.0-rc.jar(请使用最新版本)。

【讨论】:

    【解决方案2】:

    在我可用的 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");在我的火棒上什么也不返回
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多