Search code examples
androidaccountmanager

How do I retrieve the logged in Google account on android phones?


I am developing an Android application and I need to retrieve the Google account used on the phone. I want to do this for the C2DM, but I don't want to ask the user to enter in his/her Google email account if they are already logged in. Is there any way to do it?


Solution

  • Something like this should work:

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

    And you will need the following permission in your manifest:

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

    Remember to 'Requesting Permissions at Run Time' if you support Android 6 and later https://developer.android.com/training/permissions/requesting.html

    I wrote this from memory so it may need a little tweaking. Apparently it's possible to register now without an email address, so maybe do some regexing on the data to ensure it's actually an email address (ensure it contains @gmail or @googlemail)