Created
January 28, 2014 15:22
-
-
Save peterfriese/8669523 to your computer and use it in GitHub Desktop.
Google+ PlusClient cross-platform connection sequence misorder?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.app; | |
import android.content.Intent; | |
import android.content.IntentSender; | |
import android.os.Bundle; | |
import android.support.v7.app.ActionBarActivity; | |
import android.util.Log; | |
import android.widget.Toast; | |
import com.google.android.gms.common.ConnectionResult; | |
import com.google.android.gms.common.GooglePlayServicesClient; | |
import com.google.android.gms.common.Scopes; | |
import com.google.android.gms.plus.PlusClient; | |
public class MainActivity extends ActionBarActivity implements GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener { | |
private static final String TAG = "MainActivity"; | |
private static final int REQUEST_CODE_RESOLVE_ERR = 9000; | |
private PlusClient mPlusClient; | |
private ConnectionResult mConnectionResult; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
mPlusClient = new PlusClient.Builder(this, this, this) | |
.setScopes(Scopes.PLUS_LOGIN) | |
.build(); | |
} | |
@Override | |
protected void onStart() { | |
super.onStart(); | |
mPlusClient.connect(); | |
} | |
@Override | |
protected void onStop() { | |
super.onStop(); | |
mPlusClient.disconnect(); | |
} | |
@Override | |
public void onConnectionFailed(ConnectionResult result) { | |
if (result.hasResolution()) { | |
try { | |
result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR); | |
} catch (IntentSender.SendIntentException e) { | |
mPlusClient.connect(); | |
} | |
} | |
mConnectionResult = result; | |
} | |
@Override | |
protected void onActivityResult(int requestCode, int responseCode, Intent intent) { | |
if (requestCode == REQUEST_CODE_RESOLVE_ERR && responseCode == RESULT_OK) { | |
mConnectionResult = null; | |
mPlusClient.connect(); | |
} | |
} | |
@Override | |
public void onConnected(Bundle connectionHint) { | |
String accountName = mPlusClient.getAccountName(); | |
Toast.makeText(this, accountName + " is connected.", Toast.LENGTH_LONG).show(); | |
} | |
@Override | |
public void onDisconnected() { | |
Log.d(TAG, "disconnected"); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.app; | |
import android.app.ProgressDialog; | |
import android.content.Intent; | |
import android.content.IntentSender; | |
import android.os.Bundle; | |
import android.support.v7.app.ActionBarActivity; | |
import android.util.Log; | |
import android.widget.Toast; | |
import com.google.android.gms.common.ConnectionResult; | |
import com.google.android.gms.common.GooglePlayServicesClient; | |
import com.google.android.gms.common.Scopes; | |
import com.google.android.gms.plus.PlusClient; | |
public class MainActivity2 extends ActionBarActivity { | |
private static final String TAG = "ExampleActivity"; | |
private static final int REQUEST_CODE_RESOLVE_ERR = 9000; | |
private PlusClient mPlusClient; | |
private ConnectionResult mConnectionResult; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
mPlusClient = new PlusClient.Builder(this, | |
new GooglePlayServicesClient.ConnectionCallbacks() { | |
@Override | |
public void onConnected(Bundle bundle) { | |
Log.i(TAG, "connected"); | |
String accountName = mPlusClient.getAccountName(); | |
Toast.makeText(MainActivity2.this, accountName + " is connected.", Toast.LENGTH_LONG).show(); | |
} | |
@Override | |
public void onDisconnected() { | |
Log.d(TAG, "disconnected"); | |
} | |
}, | |
new GooglePlayServicesClient.OnConnectionFailedListener() { | |
@Override | |
public void onConnectionFailed(ConnectionResult connectionResult) { | |
Log.i(TAG, "failed " + connectionResult.getErrorCode()); | |
if (connectionResult.hasResolution()) { | |
try { | |
connectionResult.startResolutionForResult(MainActivity2.this, REQUEST_CODE_RESOLVE_ERR); | |
} catch (IntentSender.SendIntentException e) { | |
mPlusClient.connect(); | |
} | |
} | |
mConnectionResult = connectionResult; | |
} | |
} | |
) | |
.setScopes(Scopes.PLUS_LOGIN) // recommended login scope for social features | |
.build(); | |
} | |
@Override | |
protected void onStart() { | |
super.onStart(); | |
mPlusClient.connect(); | |
} | |
@Override | |
protected void onStop() { | |
super.onStop(); | |
mPlusClient.disconnect(); | |
} | |
@Override | |
protected void onActivityResult(int requestCode, int responseCode, Intent intent) { | |
if (requestCode == REQUEST_CODE_RESOLVE_ERR && responseCode == RESULT_OK) { | |
mConnectionResult = null; | |
mPlusClient.connect(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment