2012-03-23 12 views
7

This question ne discute per dispositivi Android in generale, ma se provi a eseguire questo codice su un Kindle Fire, tutto ciò che ottieni è il nome dell'utente. C'è un modo per ottenere l'indirizzo email? Speravamo di aprire una finestra di dialogo con l'indirizzo email già pre-compilato in modo da non doverlo digitare se fosse corretto, ma sembra che l'unica soluzione sia quella di ridigitarli.Su Kindle Fire, è possibile ottenere l'indirizzo email di un utente?

Edit: Ecco il codice che altri thread hanno suggerito (che non funziona sul 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

Non hai trovato una soluzione per questo, vero? Sto vivendo il problema io stesso – Guardanis

+0

Non ho, purtroppo. –

+0

Crap, Avevo paura di questo ... La mia app è stata trasferita da un utente su Kindle e intendeva solo Androids e si è imbattuta in questo problema ... Immagino che l'unica soluzione per me sia consentire all'utente di identificarsi da qualcosa di diverso da un'e-mail se non è disponibile ... – Guardanis

risposta

0

sul fuoco Kindle, è possibile ottenere l'indirizzo di posta elettronica di un utente?

Scusa, ma hai completamente torto.

I utilizzato per collegare alla finestra di accesso di Google che mostra tutti gli utenti esistenti su Kindle Fire.

Si prega di seguire questo codice:

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: per utilizzare la classe GoogleAuthUtil, potrebbe essere necessario google-OAuth-client-1.15.0-rc.jar (Si prega di utilizzare l'ultima versione).

0

sui dispositivi del fuoco che ho a disposizione per me, questo è quello che ho fatto:

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

Questo funziona anche con Google dispositivi Play.

Problemi correlati