2012-03-23 70 views
7

This question一般會針對android設備進行討論,但如果您嘗試在Kindle Fire上運行此代碼,則只會獲得用戶名。有什麼方法可以獲得電子郵件地址嗎?我們希望彈出一個對話框,其中已經預先填寫了電子郵件地址,這樣他們就不必在正確的時候輸入它,但似乎唯一的解決辦法是讓它們重新輸入。在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. 
} 
+0

您還沒有找到解決方案,對嗎?我自己也遇到過這個問題 – Guardanis 2013-09-09 14:53:24

+0

我很遺憾沒有。 – 2013-09-09 18:52:11

+0

垃圾,我很害怕這個......我的應用被Kindle上的用戶加載並且僅限於普通Android,並且遇到了這個問題......我想唯一的解決方案是讓我可以識別用戶通過電子郵件以外的東西,如果它不可用... – Guardanis 2013-09-09 19:49:31

回答

0

在Kindle Fire的,是有可能得到一個用戶的電子郵件地址?

對不起,但你完全錯了。

用於鏈接到谷歌登錄對話框,其中顯示所有用戶存在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; 
} 

這也將與谷歌合作播放設備。

相關問題