2010-10-27 16 views

Respuesta

44

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)

+0

gracias! justo lo que necesitaba. – fanar

+0

¿Alguien conoce soluciones similares compatibles con Android 1.6? –

+0

Encontró una respuesta aquí: http://stackoverflow.com/questions/3360926/get-main-gmail-account-username-in-android-2-0 –

0

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" /> 
Cuestiones relacionadas