Search code examples
androidgoogle-drive-apigoogle-drive-android-api

How do I switch accounts under the NEW Google Drive Android API


My authorization flow in the new Google Drive Android API is as follows:

  1. Menu: SELECT ACCOUNT
  2. connect();
  3. onConnectionFailed() result.startResolutionForResult() invokes AccountSelectDialog / DriveAuthorization
  4. onConnected() do your stuff

Works like a charm. Now repeating with the aim to switch accounts:

  1. Menu: SELECT ACCOUNT
  2. connect();
  3. onConnected()

Here, I have no chance to get to the AccountSelectDialog since I never get onConnectionFailed() with 'result' to invoke startResolutionForResult(). What am I missing this time?


Solution

  • Just call

    mGoogleApiClient.clearDefaultAccountAndReconnect();

    have a look at the docs.

    This will call the onConnectionFailed callback that will present the layout to choose among the available Google accounts:

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) 
    {
        if (connectionResult.hasResolution()) {
            try {                                              
                connectionResult.startResolutionForResult(this, RESOLVE_CONNECTION_REQUEST_CODE);
            } catch (IntentSender.SendIntentException e) {
                // Unable to resolve, message user appropriately
            }
        } else {                                           
            GooglePlayServicesUtil.getErrorDialog(connectionResult.getErrorCode(), this, 0).show();
        }
    
    }