6
6
import android .support .v7 .app .AppCompatActivity ;
7
7
import android .util .Log ;
8
8
import android .view .View ;
9
+ import android .widget .Button ;
9
10
import android .widget .TextView ;
11
+ import android .widget .Toast ;
10
12
11
13
import com .google .android .gms .auth .api .Auth ;
12
14
import com .google .android .gms .auth .api .signin .GoogleSignInAccount ;
15
17
import com .google .android .gms .common .ConnectionResult ;
16
18
import com .google .android .gms .common .SignInButton ;
17
19
import com .google .android .gms .common .api .GoogleApiClient ;
20
+ import com .google .android .gms .common .api .PendingResult ;
21
+ import com .google .android .gms .common .api .ResultCallback ;
22
+ import com .google .android .gms .common .api .Status ;
18
23
19
24
public class MainActivity
20
25
extends AppCompatActivity
21
26
implements GoogleApiClient .OnConnectionFailedListener , View .OnClickListener {
22
27
23
28
SignInButton signInButton ;
29
+ private Button signOutButton ;
24
30
TextView statusTextView ;
25
31
GoogleApiClient mGoogleApiClient ;
26
32
private static final String TAG = "SignInActivity" ;
@@ -43,19 +49,49 @@ protected void onCreate(Bundle savedInstanceState) {
43
49
.build ();
44
50
45
51
statusTextView = (TextView ) findViewById (R .id .status_textview );
46
- signInButton = (SignInButton ) findViewById (R .id .sign_in_button );
52
+ signInButton = (SignInButton ) findViewById (R .id .gsign_in_button );
47
53
signInButton .setOnClickListener (this );
54
+ signOutButton = (Button ) findViewById (R .id .sign_out_button );
55
+ signOutButton .setOnClickListener (this );
48
56
}
49
57
50
58
@ Override
51
59
public void onClick (View v ) {
52
60
switch (v .getId ()){
53
- case R .id .sign_in_button :
61
+ case R .id .gsign_in_button :
54
62
signIn ();
55
63
break ;
64
+ case R .id .sign_out_button :
65
+ signOut ();
66
+ break ;
67
+ default :
68
+ Log .d (MainActivity .class .getCanonicalName (), "Unknown id clicked : " +v .getId ());
69
+ break ;
70
+
71
+
56
72
}
57
73
}
58
74
75
+ private void signOut () {
76
+ Log .d (MainActivity .class .getCanonicalName (), "Signing out..." );
77
+ PendingResult <Status > statusPendingResult = Auth .GoogleSignInApi .signOut (mGoogleApiClient );
78
+ statusPendingResult .setResultCallback (new ResultCallback <Status >() {
79
+ @ Override
80
+ public void onResult (@ NonNull Status status ) {
81
+ if (status .isSuccess ()) {
82
+ Toast .makeText (MainActivity .this , status .getStatusMessage (), Toast .LENGTH_SHORT )
83
+ .show ();
84
+ signOutButton .setVisibility (View .INVISIBLE );
85
+ signInButton .setVisibility (View .VISIBLE );
86
+ statusTextView .setText ("Hello World!" );
87
+ } else {
88
+ Toast .makeText (MainActivity .this , status .getStatusMessage (), Toast .LENGTH_LONG )
89
+ .show ();
90
+ }
91
+ }
92
+ });
93
+ }
94
+
59
95
private void signIn () {
60
96
Intent signInIntent = Auth .GoogleSignInApi .getSignInIntent (mGoogleApiClient );
61
97
startActivityForResult (signInIntent , RC_SIGN_IN );
@@ -82,6 +118,8 @@ private void handleSignInResult(GoogleSignInResult result) {
82
118
if (result .isSuccess ()) {
83
119
GoogleSignInAccount acct = result .getSignInAccount ();
84
120
statusTextView .setText ("Hello, " + acct .getDisplayName ()); //pulls the user name
121
+ signInButton .setVisibility (View .INVISIBLE );
122
+ signOutButton .setVisibility (View .VISIBLE );
85
123
} else {
86
124
}
87
125
}
0 commit comments