当我输入用户名和密码时,我的登录页面与 firebase 连接得很好,但是当我单击按钮重置密码时,它不会发送重置链接,并且会变黑并返回到登录页面。我已经重新创建了新活动并运行了与 firebase 的连接,但仍然没有解决方案。请参阅下面我的忘记密码活动代码并使用 java 构建 gradle。我正在使用 Android Studio 的 Chipmunk 2021 版本。
emailEditText = findViewById(R.id.inputEmail);
Button resetPasswordButton = findViewById(R.id.resetPassword);
progressBar = findViewById(R.id.progressBar);
resetPasswordButton.setOnClickListener(v - > {
String email = emailEditText.getText().toString().trim();
if (email.isEmpty()) {
Toast.makeText(ForgetPassword.this, "Please enter a registered email",
Toast.LENGTH_SHORT).show();
emailEditText.setError("Email is Required");
emailEditText.requestFocus();
} else if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
emailEditText.setError("Valid email is Required");
emailEditText.requestFocus();
} else {
progressBar.setVisibility(View.VISIBLE);
resetPassword();
}
});
}
private void resetPassword() {
FirebaseAuth mAuth = FirebaseAuth.getInstance();
mAuth.sendPasswordResetEmail(Email).addOnCompleteListener(task - > {
if (task.isSuccessful()) {
Toast.makeText(ForgetPassword.this, "Please check inbox for reset password
link!", Toast.LENGTH_SHORT).show();
new Intent(ForgetPassword.this, LoginActivity.class);
//Clear stack to prevent user coming back to ForgotPassword
startActivity(null); finish();
}
else {
Toast.makeText(ForgetPassword.this, "Something went wrong!!",
Toast.LENGTH_SHORT).show();
}
progressBar.setVisibility(View.GONE);
});
}
}
构建.gradle
buildscript{
dependencies{
classpath"com.android.tools.build:gradle:7.0.4"
classpath'com.google.gms:google-services:4.3.15'
}
}
//Top-levelbuildfilewhereyoucanaddconfiguration options common to all sub-projects/modules.
plugins{
id'com.android.application'version'7.2.2'apply false
id'com.android.library'version'7.2.2'apply false
}allprojects{
repositories{
}
}taskclean(type: Delete){
deleterootProject.buildDir
}
您在函数中传递的变量“Email”;
mAuth.sendPasswordResetEmail(Email)
不是您在
中得到的String email = emailEditText.getText().toString().trim();
确保您使用正确的变量。
对于活动:
替换这个:
new Intent(ForgetPassword.this, LoginActivity.class);
//Clear stack to prevent user coming back to ForgotPassword
startActivity(null); finish();
有了这个:
Intent intent = new Intent(ForgetPassword.this, LoginActivity.class);
//this how you clear stack to prevent user coming back to ForgotPassword
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();