Я внес некоторые изменения, чтобы отправить пользователю электронное письмо с пропуском сброса. Мой код java сначала проверяет электронную почту, а затем проверяет ее, если она выходит, если электронная почта выходит, необходимо отправить сообщение об ошибке, но пока я нажимаю на приложение, cra sh мой код исправен, пока не проверит наличие электронной почты или нет, но не отправляется сообщение об ошибке
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)