GPlayServices #0: Configure the GoogleApiClient with Google Play Services.
A little snippet to connect your app with the Google Play Services API.
To use the Google Play Services API you have to follow these steps:(this blog doesn't cover these topics) :
First of all, create an instance of GoogleApiClient using the GoogleApiClient.Builder.
Our code will fail and we will receive a call to onConnectionFailed() with the SIGN_IN_REQUIRED error.
This error happens because the user account has not been specified.
It is very simple to handle this error.
Inside the ConnectionResult we can find a PendingIntent to resolve the issue.
In this case the intent will launch the activity to select an account to be used.
You can find more info here.
After choosing the account, the app asks us to authorize the access:
At this point we can connect the GoogleApiClient and use it for our scopes.
To use the Google Play Services API you have to follow these steps:(this blog doesn't cover these topics) :
- Set Up Google Play Services SDK
- Register your app in Google Developers Console to activate the API
First of all, create an instance of GoogleApiClient using the GoogleApiClient.Builder.
/** * Called when activity gets visible. A connection to Drive services need to * be initiated as soon as the activity is visible. Registers * {@code ConnectionCallbacks} and {@code OnConnectionFailedListener} on the * activities itself. */ @Override protected void onResume() { super.onResume(); if (mGoogleApiClient == null) { mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Drive.API) .addScope(Drive.SCOPE_FILE) .addScope(Drive.SCOPE_APPFOLDER) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); } mGoogleApiClient.connect(); }We have to implement the callback interfaces.
/** * Called when {@code mGoogleApiClient} is connected. */ @Override public void onConnected(Bundle connectionHint) { Log.i(TAG, "GoogleApiClient connected"); } /** * Called when {@code mGoogleApiClient} is disconnected. */ @Override public void onConnectionSuspended(int cause) { Log.i(TAG, "GoogleApiClient connection suspended"); } /** * Called when {@code mGoogleApiClient} is trying to connect but failed. * Handle {@code result.getResolution()} if there is a resolution is * available. */ @Override public void onConnectionFailed(ConnectionResult result) { Log.i(TAG, "GoogleApiClient connection failed: " + result.toString()); if (mResolvingError) { // Already attempting to resolve an error. return; }else { if (!result.hasResolution()) { mResolvingError = true; // show the localized error dialog. GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this, 0).show(); return; } try { mResolvingError = true; result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION); } catch (IntentSender.SendIntentException e) { Log.e(TAG, "Exception while starting resolution activity", e); } } }With this simple code we can try to connect.
Our code will fail and we will receive a call to onConnectionFailed() with the SIGN_IN_REQUIRED error.
This error happens because the user account has not been specified.
It is very simple to handle this error.
Inside the ConnectionResult we can find a PendingIntent to resolve the issue.
In this case the intent will launch the activity to select an account to be used.
public void onConnectionFailed(ConnectionResult result) { //...... result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION); } Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_RESOLUTION) { mResolvingError = false; if (resultCode == RESULT_OK) { // Make sure the app is not already connected or attempting to connect if (!mGoogleApiClient.isConnecting() && !mGoogleApiClient.isConnected()) { mGoogleApiClient.connect(); } } } }
You can find more info here.
After choosing the account, the app asks us to authorize the access:
At this point we can connect the GoogleApiClient and use it for our scopes.
Comments
Post a Comment