Estoy desarrollando una aplicación de Android y necesito recuperar la cuenta de Google utilizada en el teléfono. Quiero hacer esto para el C2DM, pero no quiero pedirle al usuario que ingrese su cuenta de correo electrónico de Google si ya ha iniciado sesión. ¿Hay alguna forma de hacerlo?¿Cómo recupero la cuenta de Google registrada en teléfonos Android?
Respuesta
Algo como esto debería funcionar:
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;
}
}
y necesitará el siguiente permiso en su manifiesto:
<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
Recuerde a 'Solicitud de permisos en tiempo de ejecución' si apoya Android 6 y más tarde https://developer.android.com/training/permissions/requesting.html
Escribí esto de memoria así que puede necesitar un pequeño ajuste. Al parecer es posible registrar ahora, sin una dirección de correo electrónico, así que tal vez hacer algunas regexing en los datos para asegurarse de que en realidad es una dirección de correo electrónico (asegurarse de que contiene @gmail o @googlemail)
tengo tratar a continuación alcance para obtener la dirección correo electrónico y nombre de usuario
Obtener cuenta de Google en tu móvil
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;
}
Obtener cuentas de Google nombre de usuario en el móvil
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;
}
}
declara los permisos a su archivo de mainfest.
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
- 1. Cómo transferir aplicaciones pagas de Android de una cuenta de google a otra cuenta de google
- 2. Iniciando programáticamente la actividad 'Agregar cuenta de Google' en Android
- 3. Android SyncAdapter usando una cuenta de Google
- 4. ¿Cómo configuro un proxy en teléfonos Android?
- 5. ¿Cómo accedo a la cámara en teléfonos con Android?
- 6. Android - Obtención de configuración de sincronización de cuenta de Google
- 7. ¿Cómo usar la cuenta de google en su propia aplicación de Android?
- 8. Primer día de semana en teléfonos Android
- 9. cuenta única de Google authtoken para API múltiple de datos de Google en Android
- 10. Distancia entre dos teléfonos Android
- 11. ¿Cómo habilitar la sincronización de la cuenta personalizada en Android?
- 12. Uso de la cuenta de Google para iniciar sesión en una aplicación de Android
- 13. ¿Cómo probar Google Plus API (cuenta de prueba Google Plus)?
- 14. compilador Java para los teléfonos Android
- 15. controlando la intensidad de vibración en teléfonos Android? ¿Es posible?
- 16. Supervisar la actividad de red en teléfonos Android
- 17. Publicar en una cuenta de Google+ (Google plus)
- 18. Cuenta mercantil en el mercado de Android
- 19. Zócalos de apertura entre 2 teléfonos Android
- 20. Android Administrador de teléfonos para detectar sim
- 21. Android: ¿conecta dos teléfonos de forma inalámbrica?
- 22. ¿Cómo encontrar la cuenta de Gmail asociada con Android Market?
- 23. ¿Cómo registro mi cuenta de Google en el emulador de Android ejecutando 2.2 api nivel 8?
- 24. Android: verificar el nombre de la cuenta de google del dispositivo en el servidor
- 25. Lista de los teléfonos Android más populares?
- 26. ¿Qué modelos de teléfonos Android admiten getNeighboringCellInfo()?
- 27. H.264 AVC compatible con teléfonos Android?
- 28. ¿Qué teléfonos con Android tienen un giroscopio?
- 29. Marketshare de varios tipos de CPU en teléfonos Android
- 30. Transmisión de video en vivo entre dos teléfonos Android
gracias! justo lo que necesitaba. – fanar
¿Alguien conoce soluciones similares compatibles con Android 1.6? –
Encontró una respuesta aquí: http://stackoverflow.com/questions/3360926/get-main-gmail-account-username-in-android-2-0 –