2012-03-23 16 views
7

This questionは、一般的なアンドロイドデバイスについて説明していますが、このコードをKindle Fireで実行しようとすると、ユーザーの名前がす​​べて取得されます。メールアドレスを取得する方法はありますか?すでに入力済みの電子メールアドレスを持つダイアログをポップアップして、正しい場合には入力する必要がないようにしたいと考えていましたが、唯一の解決策は再入力することだと思われます。Kindleの火災では、ユーザーの電子メールアドレスを取得することは可能ですか?

編集:ここでは(Kindleの火災では動作しません)他のスレッドが示唆されていることをコードです:

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. 
} 
+0

解決策が見つかりませんでしたか?私は自分自身で問題を経験している – Guardanis

+0

私は悲しんでいません。 –

+0

クラップス、私はそれを恐れていた...私のアプリはKindleのユーザーによってサイドロードされていて、通常のアンドロイドのみを対象としていたので、この問題に遭遇した...私は唯一の解決策は、利用できない場合はメール以外の何かによって – Guardanis

答えて

0

Kindleの火災では、それがユーザーの電子メールアドレスを取得することは可能でしょうか?

申し訳ありませんが、あなたは全く間違っています。

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

P/S:GoogleAuthUtilクラスを使用するには、最新のバージョンを使用してください( - グーグルのOAuthクライアント-1.15.0-rc.jar必要かもしれません)。私は私に利用可能な消防デバイスで

0

、これは私がやったことです:

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のデバイスで動作します。

関連する問題