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.
}
4

2 に答える 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 デバイスでも機能します。

于 2016-01-17T12:33:56.290 に答える
0

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 が必要かもしれません (最新バージョンを使用してください)。

于 2013-11-27T14:15:09.920 に答える