3 回答

TA貢獻1864條經(jīng)驗 獲得超6個贊
fetchProvidersForEmail 是一個異步調(diào)用,因此您必須在回調(diào)中使用其返回值。
在主線程上返回 true 將不起作用。
這是解決方案:
首先用方法創(chuàng)建接口(成功)
public interface OnEmailCheckListener(){
void onSuccess(boolean isRegistered);
}
你的 checkEmail 方法應(yīng)該是這樣的:
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);
}
});
}
最后像這樣調(diào)用你的 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條經(jīng)驗 獲得超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();
}
});
}
添加回答
舉報