¿Cómo recupero la cuenta de Google registrada en teléfonos Android?

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?

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ás el siguiente permiso en tu manifiesto:

  

Recuerde ‘Solicitar permisos en tiempo de ejecución’ si es compatible con Android 6 y posteriores https://developer.android.com/training/permissions/requesting.html

Lo escribí de memoria así que puede necesitar un pequeño ajuste. Aparentemente es posible registrarse ahora sin una dirección de correo electrónico, así que tal vez regebre los datos para asegurarse de que en realidad es una dirección de correo electrónico (asegúrese de que contenga @gmail o @googlemail)

Intenté por debajo del scope para obtener la dirección de correo electrónico y el nombre de usuario

Obtén una cuenta de Google en tu dispositivo 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 el nombre de usuario de las cuentas de Google en su dispositivo móvil

  public String getUsername() { List 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 permisos a tu archivo mainfest.

   
    Intereting Posts