Sto sviluppando un'applicazione Android e ho bisogno di recuperare l'account Google utilizzato sul telefono. Voglio farlo per il C2DM, ma non voglio chiedere all'utente di inserire nel suo account di posta elettronica Google se sono già registrati. Esiste un modo per farlo?Come posso recuperare l'account Google registrato su telefoni Android?
risposta
Qualcosa del genere dovrebbe funzionare:
AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();
String gmail = null;
for(Account account: list)
{
if(account.type.equalsIgnoreCase("com.google"))
{
gmail = account.name;
break;
}
}
e sarà necessario l'autorizzazione seguente nel vostro manifesto:
<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
Ricordarsi di 'Richiesta di permessi in fase di esecuzione' se sostenete Android 6 e più avanti https://developer.android.com/training/permissions/requesting.html
Ho scritto questo dalla memoria in modo che potrebbe essere necessario un piccolo ritocco. Apparentemente è possibile registrarsi ora senza un indirizzo email, quindi forse fare un po 'di regexing sui dati per assicurarsi che sia effettivamente un indirizzo email (assicurati che contenga @gmail o @googlemail)
Ho provato di seguito scope per ottenere l'indirizzo email e nome utente
Get account Google sul cellulare
public String getMailId() {
String strGmail = null;
try {
Account[] accounts = AccountManager.get(this).getAccounts();
Log.e("PIKLOG", "Size: " + accounts.length);
for (Account account : accounts) {
String possibleEmail = account.name;
String type = account.type;
if (type.equals("com.google")) {
strGmail = possibleEmail;
Log.e("PIKLOG", "Emails: " + strGmail);
break;
}
}
} catch (Exception e) {
e.printStackTrace();
strGmail = null;
}
return strGmail;
}
Get Google account nome utente nel tuo cellulare
public String getUsername() {
List<String> possibleEmails = null;
try {
AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
possibleEmails = new LinkedList<>();
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.
possibleEmails.add(account.name);
}
} catch (Exception e) {
e.printStackTrace();
if (possibleEmails != null) {
possibleEmails.clear();
}
}
if (possibleEmails != null) {
if (!possibleEmails.isEmpty() && possibleEmails.get(0) != null) {
String email = possibleEmails.get(0);
String[] parts = email.split("@");
if (parts.length > 0 && parts[0] != null) {
return parts[0];
} else {
return null;
}
} else {
return null;
}
} else {
return null;
}
}
permessi di dichiarazione al file Mainfest.
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
- 1. Come posso recuperare la cronologia delle mie ricerche su Google?
- 2. Il motore TTS di Google su tutti i telefoni Android e dove posso ottenerlo?
- 3. Esecuzione di app J2me su telefoni Android
- 4. AppWidget Android non visualizzato su alcuni telefoni
- 5. Primo giorno della settimana su telefoni Android
- 6. Terminale non registrato digitando su Android Studio
- 7. Come accedere alla videocamera sui telefoni Android?
- 8. Come posso recuperare le mappe statiche di Google con TIdHTTP?
- 9. pulsante Indietro sui telefoni Android
- 10. Come recuperare un Facebook-AuthToken dagli account salvati su Android
- 11. Realtà aumentata su telefoni cellulari
- 12. Come posso ottenere il nome utente google su Android?
- 13. Android - Come recuperare i tassi di cambio
- 14. Come posso recuperare il percorso da un'immagine nella galleria Android?
- 15. Come posso recuperare da EXC_BAD_ACCESS?
- 16. Dispositivi USB esterni per telefoni Android?
- 17. Come recuperare il risultato dell'attività figlio su Genitore in Android?
- 18. Streaming video live tra due telefoni Android
- 19. Android 3.0 - Come recuperare TUTTI i contatti tramite ContactsContract
- 20. Come specificare le attività che sono solo per i telefoni o tablet su Android
- 21. Apertura di prese tra 2 telefoni Android
- 22. Collegare due telefoni Android con cavo USB
- 23. Streaming voce tra telefoni Android tramite WiFi
- 24. Android: connetti due telefoni in modalità wireless?
- 25. Elenco dei telefoni Android più popolari?
- 26. Come posso progettare un sito per telefoni cellulari
- 27. Come posso recuperare il numero di processori su C/Linux?
- 28. Già registrato su/appname /: Il modello Utente è già registrato
- 29. Come recuperare le chiamate perse su Android SDK 2.2
- 30. Come posso utilizzare il riconoscimento vocale senza la fastidiosa finestra di dialogo nei telefoni Android
grazie! proprio quello di cui avevo bisogno. – fanar
Chiunque sia a conoscenza di soluzioni simili compatibili con Android 1.6? –
Trovato una risposta qui: http://stackoverflow.com/questions/3360926/get-main-gmail-account-username-in-android-2-0 –