Implementing google play services in android

14,960

Solution 1

As of today and Google Play SDK version 15, this has been replaced with

result.startResolutionForResult(this, // your activity
                                RC_SIGN_IN);

as per the updated documentation.

Solution 2

Hope it helps you

result.getResolution().getIntentSender()
Share:
14,960

Related videos on Youtube

Eric Goncalves
Author by

Eric Goncalves

Hi.

Updated on June 04, 2022

Comments

  • Eric Goncalves
    Eric Goncalves almost 2 years

    I am going along with the tutorial here, and am getting there error The method getIntentSender() is undefined for the type ConnectionResult in the onConnectionFailed class.

    Full Code

    package com.alfalfa.thisthat;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.content.IntentSender.SendIntentException;
    import android.os.Bundle;
    import android.view.Menu;
    
    import com.google.android.gms.common.ConnectionResult;
    import com.google.android.gms.common.api.GoogleApiClient;
    import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
    import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
    import com.google.android.gms.plus.Plus;
    
    public class LoginActivity extends Activity implements
    ConnectionCallbacks, OnConnectionFailedListener {
    
        /* Request code used to invoke sign in user interactions. */
        private static final int RC_SIGN_IN = 0;
    
        /* Client used to interact with Google APIs. */
        private GoogleApiClient mGoogleApiClient;
    
        /* A flag indicating that a PendingIntent is in progress and prevents
         * us from starting further intents.
         */
        private boolean mIntentInProgress;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(Plus.API, null)
                .addScope(Plus.SCOPE_PLUS_LOGIN)
                .build();
        }
    
        protected void onStart() {
            super.onStart();
            mGoogleApiClient.connect();
        }
    
        protected void onStop() {
            super.onStop();
    
            if (mGoogleApiClient.isConnected()) {
                mGoogleApiClient.disconnect();
            }
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        @Override
        public void onConnectionFailed(ConnectionResult result) {
              if (!mIntentInProgress && result.hasResolution()) {
                try {
                  mIntentInProgress = true;
                  startIntentSenderForResult(result.getIntentSender(),
                      RC_SIGN_IN, null, 0, 0, 0);
                } catch (SendIntentException e) {
                  // The intent was canceled before it was sent.  Return to the default
                  // state and attempt to connect to get an updated ConnectionResult.
                  mIntentInProgress = false;
                  mGoogleApiClient.connect();
                }
              }
            }
    
        @Override
        public void onConnected(Bundle connectionHint) {
            // We've resolved any connection errors.  mGoogleApiClient can be used to
            // access Google APIs on behalf of the user.
        }
    
        @Override
        public void onConnectionSuspended(int cause) {
              mGoogleApiClient.connect();
        }
    
        protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
              if (requestCode == RC_SIGN_IN) {
                  mIntentInProgress = false;
    
                    if (!mGoogleApiClient.isConnecting()) {
                        mGoogleApiClient.connect();
                    }
              }
        }
    }
    

    EDIT: LogCat

    02-13 19:12:31.763: E/AndroidRuntime(21257): FATAL EXCEPTION: main
    02-13 19:12:31.763: E/AndroidRuntime(21257): Process: com.alfalfa.thisthat, PID: 21257
    02-13 19:12:31.763: E/AndroidRuntime(21257): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.alfalfa.thisthat/com.alfalfa.thisthat.MainActivity}: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.alfalfa.thisthat/com.alfalfa.thisthat.LoginActivity}; have you declared this activity in your AndroidManifest.xml?
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.ActivityThread.access$800(ActivityThread.java:135)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.os.Handler.dispatchMessage(Handler.java:102)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.os.Looper.loop(Looper.java:136)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.ActivityThread.main(ActivityThread.java:5017)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at java.lang.reflect.Method.invokeNative(Native Method)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at java.lang.reflect.Method.invoke(Method.java:515)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at dalvik.system.NativeStart.main(Native Method)
    02-13 19:12:31.763: E/AndroidRuntime(21257): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.alfalfa.thisthat/com.alfalfa.thisthat.LoginActivity}; have you declared this activity in your AndroidManifest.xml?
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1628)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.Activity.startActivityForResult(Activity.java:3424)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.Activity.startActivityForResult(Activity.java:3385)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.Activity.startActivity(Activity.java:3627)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.Activity.startActivity(Activity.java:3595)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at com.alfalfa.thisthat.MainActivity.onCreate(MainActivity.java:16)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.Activity.performCreate(Activity.java:5231)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
    02-13 19:12:31.763: E/AndroidRuntime(21257):    ... 11 more
    
  • Eric Goncalves
    Eric Goncalves about 10 years
    If I changed that line to the above the LoginActivity class doesn't show any errors, but if I run the program with an intent from MainActivity to LoginActivity, the app force closes. Is there anything else I am doing incorrectly? Thanks.
  • ianhanniballake
    ianhanniballake about 10 years
    Post your logcat if it is force closing
  • ianhanniballake
    ianhanniballake about 10 years
    That error looks like you haven't declared one of your Activities in your Manifest and not related to Google Play Services.
  • Eric Goncalves
    Eric Goncalves about 10 years
    thanks, that took away the error. I'm a toast saying "an internal error occurred" and the screen is flashing. not sure what that is. but ill save it for another question I guess. Thanks for your help.
  • Taryn East
    Taryn East almost 10 years
    Hiya, this may well solve the problem... but it'd be good if you could provide a little explanation about how and why it works :) Don't forget - there are heaps of newbies on Stack overflow, and they could learn a thing or two from your expertise - what's obvious to you might not be so to them.