Android 带有从firebase请求电子邮件验证链接选项的警报对话框不工作
我试图在用户登录活动中显示一个带有两个按钮(“确定”和“发送电子邮件”)的警报对话框。我正在使用firebase进行用户身份验证。在尝试实现警报对话框之前,我使用了Android 带有从firebase请求电子邮件验证链接选项的警报对话框不工作,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我试图在用户登录活动中显示一个带有两个按钮(“确定”和“发送电子邮件”)的警报对话框。我正在使用firebase进行用户身份验证。在尝试实现警报对话框之前,我使用了Toast.makeText来显示电子邮件地址未经验证,我的工作非常正常。但现在,我想给用户一个选项,要求再次电子邮件验证链接,以防他们找不到前一个。我看了一遍,也看了一些关于slackoverflow的问题和答案。我在这里面临的问题是,即使我可以通过创建一个片段类来弹出对话框,我也不能使用这个选项。因为我不知道如何将当前用户实例从f
Toast.makeText
来显示电子邮件地址未经验证,我的工作非常正常。但现在,我想给用户一个选项,要求再次电子邮件验证链接,以防他们找不到前一个。我看了一遍,也看了一些关于slackoverflow的问题和答案。我在这里面临的问题是,即使我可以通过创建一个片段类来弹出对话框,我也不能使用这个选项。因为我不知道如何将当前用户实例从firebase检索到另一个类。如果我尝试这样做,它总是会压垮应用程序。因此,我尝试在activity类中实现alert对话框,您可以在下面看到我的代码
firebaseAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressDialog.dismiss();
if(task.isSuccessful()){
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (!user.isEmailVerified()){
AlertDialog.Builder emailAlert = new AlertDialog.Builder(getActivity());
emailAlert.setTitle("Verify you email");
emailAlert.setMessage("The email address is not verified.");
emailAlert.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
firebaseAuth.signOut();
return;
}
});
emailAlert.setNegativeButton(R.string.send_email, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
user.sendEmailVerification()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Toast.makeText(LoginActivity.this, "Email Sent", Toast.LENGTH_SHORT).show();
}
firebaseAuth.signOut();
return;
}
});
}
});
emailAlert.create();
}
startActivity(new Intent(getApplicationContext(),HomeActivity.class));
}
else{
Toast.makeText(LoginActivity.this, "Login Failed, please make sure all feids are complete", Toast.LENGTH_SHORT).show();
}
progressDialog.dismiss();
}
});
firebaseAuth.signiWithEmailandPassword(电子邮件,密码)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
progressDialog.disclose();
if(task.issusccessful()){
最终FirebaseUser用户=FirebaseAuth.getInstance().getCurrentUser();
如果(!user.isEmailVerified()){
AlertDialog.Builder emailAlert=新建AlertDialog.Builder(getActivity());
emailAlert.setTitle(“验证您的电子邮件”);
emailAlert.setMessage(“未验证电子邮件地址”);
emailAlert.setPositiveButton(R.string.ok,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
firebaseAuth.signOut();
返回;
}
});
emailAlert.setNegativeButton(R.string.send_email,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
user.sendEmailVerification()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Toast.makeText(LoginActivity.this,“电子邮件已发送”,Toast.LENGTH_SHORT.show();
}
firebaseAuth.signOut();
返回;
}
});
}
});
emailAlert.create();
}
startActivity(新意图(getApplicationContext(),HomeActivity.class));
}
否则{
Toast.makeText(LoginActivity.this,“登录失败,请确保所有feid都已完成”,Toast.LENGTH_SHORT.show();
}
progressDialog.disclose();
}
});
没有运行时错误,但未显示警报对话框。有人能指出我做错了什么吗?请告诉我是否有更好的方法获得同样的结果。首先
AlertDialog.Builder emailAlert=新建AlertDialog.Builder(getActivity())
与
AlertDialog.Builder emailAlert=新建AlertDialog.Builder(此)
因为getActivity()不适用于活动
最重要的是,要取代
emailAlert.create()
与
emailAlert.show()
希望您的问题能得到解决。首先,请更换
AlertDialog.Builder emailAlert=新建AlertDialog.Builder(getActivity())
与
AlertDialog.Builder emailAlert=新建AlertDialog.Builder(此)
因为getActivity()不适用于活动
最重要的是,要取代
emailAlert.create()
与
emailAlert.show()
希望你的问题能解决。我很高兴。谢谢,这是我的荣幸。谢谢