@@ -64,6 +64,7 @@ public void onCreate(Bundle savedInstanceState) {
6464 findViewById (R .id .email_sign_in_button ).setOnClickListener (this );
6565 findViewById (R .id .email_create_account_button ).setOnClickListener (this );
6666 findViewById (R .id .sign_out_button ).setOnClickListener (this );
67+ findViewById (R .id .verify_email_button ).setOnClickListener (this );
6768
6869 // [START initialize_auth]
6970 mAuth = FirebaseAuth .getInstance ();
@@ -178,6 +179,37 @@ private void signOut() {
178179 updateUI (null );
179180 }
180181
182+ private void sendEmailVerification () {
183+ // Disable button
184+ findViewById (R .id .verify_email_button ).setEnabled (false );
185+
186+ // Send verification email
187+ // [START send_email_verification]
188+ final FirebaseUser user = mAuth .getCurrentUser ();
189+ user .sendEmailVerification ()
190+ .addOnCompleteListener (this , new OnCompleteListener <Void >() {
191+ @ Override
192+ public void onComplete (@ NonNull Task <Void > task ) {
193+ // [START_EXCLUDE]
194+ // Re-enable button
195+ findViewById (R .id .verify_email_button ).setEnabled (true );
196+
197+ if (task .isSuccessful ()) {
198+ Toast .makeText (EmailPasswordActivity .this ,
199+ "Verification email sent to " + user .getEmail (),
200+ Toast .LENGTH_SHORT ).show ();
201+ } else {
202+ Log .e (TAG , "sendEmailVerification" , task .getException ());
203+ Toast .makeText (EmailPasswordActivity .this ,
204+ "Failed to send verification email." ,
205+ Toast .LENGTH_SHORT ).show ();
206+ }
207+ // [END_EXCLUDE]
208+ }
209+ });
210+ // [END send_email_verification]
211+ }
212+
181213 private boolean validateForm () {
182214 boolean valid = true ;
183215
@@ -203,19 +235,22 @@ private boolean validateForm() {
203235 private void updateUI (FirebaseUser user ) {
204236 hideProgressDialog ();
205237 if (user != null ) {
206- mStatusTextView .setText (getString (R .string .emailpassword_status_fmt , user .getEmail ()));
238+ mStatusTextView .setText (getString (R .string .emailpassword_status_fmt ,
239+ user .getEmail (), user .isEmailVerified ()));
207240 mDetailTextView .setText (getString (R .string .firebase_status_fmt , user .getUid ()));
208241
209242 findViewById (R .id .email_password_buttons ).setVisibility (View .GONE );
210243 findViewById (R .id .email_password_fields ).setVisibility (View .GONE );
211- findViewById (R .id .sign_out_button ).setVisibility (View .VISIBLE );
244+ findViewById (R .id .signed_in_buttons ).setVisibility (View .VISIBLE );
245+
246+ findViewById (R .id .verify_email_button ).setEnabled (!user .isEmailVerified ());
212247 } else {
213248 mStatusTextView .setText (R .string .signed_out );
214249 mDetailTextView .setText (null );
215250
216251 findViewById (R .id .email_password_buttons ).setVisibility (View .VISIBLE );
217252 findViewById (R .id .email_password_fields ).setVisibility (View .VISIBLE );
218- findViewById (R .id .sign_out_button ).setVisibility (View .GONE );
253+ findViewById (R .id .signed_in_buttons ).setVisibility (View .GONE );
219254 }
220255 }
221256
@@ -228,6 +263,8 @@ public void onClick(View v) {
228263 signIn (mEmailField .getText ().toString (), mPasswordField .getText ().toString ());
229264 } else if (i == R .id .sign_out_button ) {
230265 signOut ();
266+ } else if (i == R .id .verify_email_button ) {
267+ sendEmailVerification ();
231268 }
232269 }
233270}
0 commit comments