3 回答
TA贡献1864条经验 获得超6个赞
fetchProvidersForEmail 是一个异步调用,因此您必须在回调中使用其返回值。
在主线程上返回 true 将不起作用。
这是解决方案:
首先用方法创建接口(成功)
public interface OnEmailCheckListener(){
void onSuccess(boolean isRegistered);
}
你的 checkEmail 方法应该是这样的:
public void isCheckEmail(final String email,final OnEmailCheckListener listener){
mAuth.fetchProvidersForEmail(email).addOnCompleteListener(new OnCompleteListener<ProviderQueryResult>()
{
@Override
public void onComplete(@NonNull Task<ProviderQueryResult> task)
{
boolean check = !task.getResult().getProviders().isEmpty();
listener.onSuccess(check);
}
});
}
最后像这样调用你的 isCheckEmail :
isCheckEmail("yourEmail@test.com",new OnEmailCheckListener(){
@Override
void onSuccess(boolean isRegistered){
if(isRegistered){
//The email was registered before
} else {
//The email not registered before
}
}
});
希望这对你有帮助。
TA贡献1942条经验 获得超3个赞
此方法可用于检查电子邮件是否存在
void checkEmailExistsOrNot(){
firebaseauth.fetchSignInMethodsForEmail(email.getText().toString()).addOnCompleteListener(new OnCompleteListener<SignInMethodQueryResult>() {
@Override
public void onComplete(@NonNull Task<SignInMethodQueryResult> task) {
Log.d(TAG,""+task.getResult().getSignInMethods().size());
if (task.getResult().getSignInMethods().size() == 0){
// email not existed
}else {
// email existed
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
e.printStackTrace();
}
});
}
添加回答
举报