2010-10-27 16 views

Odpowiedz

44

Coś jak to powinno działać:

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

i trzeba będzie następujące uprawnienia w swoim manifeście:

<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission> 

Pamiętaj, aby „Żądanie uprawnień w czasie pracy”, jeśli wspierać Androida 6 i później https://developer.android.com/training/permissions/requesting.html

Napisałem to z pamięci, więc może potrzebować trochę ulepszenia. Wygląda na to, że można się teraz zarejestrować bez adresu e-mail, więc może wykonaj pewne wyodrębnienie danych, aby upewnić się, że jest to rzeczywiście adres e-mail (upewnij się, że zawiera @gmail lub @googlemail)

+0

dzięki! dokładnie to, czego potrzebowałem. – fanar

+0

Ktoś świadomy podobnych rozwiązań zgodnych z Androidem 1.6? –

+0

Znaleziono odpowiedź tutaj: http://stackoverflow.com/questions/3360926/get-main-gmail-account-username-in-android-2-0 –

0

Mam spróbować poniżej zakresu, aby uzyskać adres e-mail i nazwa

Get konta Google w telefonie

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 kont Google nazwę użytkownika w telefonie

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

zadeklaruj uprawnienia do pliku mainfest.

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
Powiązane problemy