[英]Application crashed when trying to send reset password by email firebase implementation
I have made some changes to send a reset pass email to the user.我进行了一些更改以向用户发送重置通行证 email。 My java code first validates the email and then checks for the email if it exits, if the email exits the reset email must be sent but while i click the app crash my code is good until it checks the email is present or not but its not sending reset email
My java code first validates the email and then checks for the email if it exits, if the email exits the reset email must be sent but while i click the app crash my code is good until it checks the email is present or not but its not发送复位 email
Java Code Java代码
public class forgotpass extends AppCompatActivity {
TextInputLayout regEmail,regUsr;
ProgressDialog progressDialog;
Button forgotPass;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_forgotpass);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
regEmail=findViewById(R.id.emailfield);
regUsr=findViewById(R.id.usrnamefield);
progressDialog = new ProgressDialog(this);
}
private Boolean validateusrEmail() {
String ews = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
String val = regEmail.getEditText().getText().toString();
if (val.isEmpty()) {
regEmail.setError("Field cannot be empty");
return false;
} else if (!val.matches(ews)) {
regEmail.setError("Invalid Email address");
return false;
} else {
regEmail.setError(null);
regEmail.setErrorEnabled(false);
return true;
}
}
public void changepass(View view)
{
if(!validateusrEmail())
{return;}
else {
resetByemail();
}
}
public void frgtUsername(View view)
{
if(!validateusrEmail())
{return;}
else {
showUsername();
}
}
private void showUsername() {
}
private void resetByemail() {
final String enteredEmail = regEmail.getEditText().getText().toString().trim();
DatabaseReference reference= FirebaseDatabase.getInstance().getReference("users");
Query checkUser = reference.orderByChild("email").equalTo(enteredEmail);
checkUser.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists())
{
regEmail.setError(null);
regEmail.setErrorEnabled(false);
sendPass(enteredEmail);
}else{
regEmail.setError("No such email found.Please entered verified email.");
regEmail.requestFocus();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void sendPass(String enteredEmail) {
progressDialog.setMessage("Sending Email....");
progressDialog.show();
mAuth.sendPasswordResetEmail(enteredEmail)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
progressDialog.dismiss();
if(task.isSuccessful()){
Toast.makeText(forgotpass.this, "Reset Email Sent", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(forgotpass.this, "Failed to send email", Toast.LENGTH_SHORT).show();
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
progressDialog.dismiss();
Toast.makeText(forgotpass.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
private Boolean validateusrName() {
String val = regUsr.getEditText().getText().toString();
if (val.isEmpty()) {
regUsr.setError("Field cannot be empty");
return false;
} else {
regUsr.setError(null);
regUsr.setErrorEnabled(false);
return true;
}
}
public void onUsernameCheck(View view)
{
if(!validateusrName())
{return;}
else {
showEmail();
}
}
private void showEmail() {
}
} }
LOG日志
2020-04-25 18:28:01.537 6414-6414/com.studenthelper.bscithelp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.studenthelper.bscithelp, PID: 6414
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.tasks.Task com.google.firebase.auth.FirebaseAuth.sendPasswordResetEmail(java.lang.String)' on a null object reference
at com.studenthelper.bscithelp.forgotpass.sendPass(forgotpass.java:109)
at com.studenthelper.bscithelp.forgotpass.access$000(forgotpass.java:25)
at com.studenthelper.bscithelp.forgotpass$1.onDataChange(forgotpass.java:91)
at com.google.firebase.database.Query$1.onDataChange(com.google.firebase:firebase-database@@19.2.1:179)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.2.1:75)
at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.2.1:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.2.1:55)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
You never initialize your mAuth
:你永远不会初始化你的
mAuth
:
mAuth = FirebaseAuth.getInstance();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.