这是我的LoginActivity Source:
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
@SuppressWarnings("ConstantConditions")
public class LoginActivity extends AppCompatActivity {
private TextInputLayout emailField;
private TextInputLayout passwordField;
private View btnLogin;
private View btnRegister;
private Button btnResetPassword;
private ProgressDialog progressDialog;
private FirebaseAuth auth;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
emailField = (TextInputLayout) findViewById(R.id.email_field);
passwordField = (TextInputLayout) findViewById(R.id.password_field);
btnLogin = findViewById(R.id.login);
btnRegister = findViewById(R.id.register);
btnResetPassword = (Button) findViewById(R.id.btn_reset_password);
//Get Firebase auth instance
auth = FirebaseAuth.getInstance();
btnResetPassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(LoginActivity.this, ResetPasswordActivity.class));
}
});
//go to Login Activity
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
startActivity(intent);
finish();
}
});
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!Utils.hasText(emailField)) {
Utils.showToast(LoginActivity.this, "Please input your email");
} else if (!Utils.hasText(passwordField)) {
Utils.showToast(LoginActivity.this, "Please input your password");
} else {
//requesting Firebase server
showProcessDialog();
authenticateUser(Utils.getText(emailField), Utils.getText(passwordField));
}
}
});
}
private void authenticateUser(String email, String password) {
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
// When login failed
if (!task.isSuccessful()) {
Utils.showToast(LoginActivity.this, "Login error!");
} else {
//When login successful, redirect user to main activity
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
progressDialog.dismiss();
finish();
}
}
});
}
private void showProcessDialog() {
progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Login");
progressDialog.setMessage("Logging in Firebase server...");
progressDialog.show();
}
public void onBackPressed() {
Intent a = new Intent(Intent.ACTION_MAIN);
a.addCategory(Intent.CATEGORY_HOME);
a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(a);
}
}
这是Profile.java来源:
public class Profile extends AppCompatActivity {
private FirebaseAuth.AuthStateListener authListener;
private FirebaseAuth auth;
private ImageView imageView;
private TextView email;
private TextView name;
private View btnLogOut;
private TextView userId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
name = (TextView) findViewById(R.id.displayed_name);
email = (TextView) findViewById(R.id.email_field);
btnLogOut = findViewById(R.id.logout);
userId = (TextView) findViewById(R.id.user_id);
imageView = (ImageView) findViewById(R.id.user_photo);
//get firebase auth instance
auth = FirebaseAuth.getInstance();
//get current user
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
setDataToView(user);
//add a auth listener
authListener = new FirebaseAuth.AuthStateListener() {
@SuppressLint("SetTextI18n")
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
Log.d("Profile", "onAuthStateChanged");
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
setDataToView(user);
//loading image by Picasso
if (user.getPhotoUrl() != null) {
Log.d("Profile", "photoURL: " + user.getPhotoUrl());
Picasso.with(Profile.this).load(user.getPhotoUrl()).into(imageView);
}
} else {
//user auth state is not existed or closed, return to Login activity
startActivity(new Intent(Profile.this, LoginActivity.class));
finish();
}
}
};
//Signing out
btnLogOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
auth.signOut();
}
});
}
@SuppressLint("SetTextI18n")
private void setDataToView(FirebaseUser user) {
email.setText("User Email: " + user.getEmail());
name.setText("User name: " + user.getDisplayName());
userId.setText("User id: " + user.getUid());
}
@Override
public void onStart() {
super.onStart();
auth.addAuthStateListener(authListener);
}
@Override
public void onStop() {
super.onStop();
if (authListener != null) {
auth.removeAuthStateListener(authListener);
}
}
}