Существует проблема приведения, которая является FirebaseAuthException. В некоторых случаях исключение задачи нельзя преобразовать в FirebaseAuthException. Как я могу справиться с этой ситуацией? Я хочу попробовать этот процесс литья. Если это будет успешно, я покажу пользователю ошибку с подробностями. В противном случае, если это не удастся, я хочу показать только ошибку.
if (task.getException() != null){
try {
String errorCode = ((FirebaseAuthException) task.getException()).getErrorCode();
switch(errorCode) {
case "ERROR_EMAIL_ALREADY_IN_USE":
Toast.makeText(LoginActivity.this, LoginActivity.this.getResources().getString(R.string.ERROR_EMAIL_ALREADY_IN_USE),
Toast.LENGTH_SHORT).show();
stopIndicator();
break;
case "ERROR_INVALID_EMAIL":
Toast.makeText(LoginActivity.this, LoginActivity.this.getResources().getString(R.string.ERROR_INVALID_EMAIL),
Toast.LENGTH_SHORT).show();
stopIndicator();
break;
case "ERROR_WEAK_PASSWORD":
Toast.makeText(LoginActivity.this, LoginActivity.this.getResources().getString(R.string.ERROR_WEAK_PASSWORD),
Toast.LENGTH_SHORT).show();
stopIndicator();
break;
case "ERROR_CREDENTIAL_ALREADY_IN_USE":
Toast.makeText(LoginActivity.this, "CREDENTIAL ALREADY IN USE",
Toast.LENGTH_SHORT).show();
stopIndicator();
break;
default:
Toast.makeText(LoginActivity.this, LoginActivity.this.getResources().getString(R.string.Error),
Toast.LENGTH_SHORT).show();
stopIndicator();
}
}
catch (WindowManager.BadTokenException e) {
Toast.makeText(LoginActivity.this, LoginActivity.this.getResources().getString(R.string.Error),
Toast.LENGTH_SHORT).show();
stopIndicator();
}
}else{
Toast.makeText(LoginActivity.this, LoginActivity.this.getResources().getString(R.string.Error),
Toast.LENGTH_SHORT).show();
stopIndicator();
}
String errorCode;
if (task.getException()).getErrorCode() instanceof FirebaseAuthException){
errorCode = ((FirebaseAuthException) task.getException()).getErrorCode();
switch(errorCode) {
case "ERROR_EMAIL_ALREADY_IN_USE":
Toast.makeText(LoginActivity.this, LoginActivity.this.getResources().getString(R.string.ERROR_EMAIL_ALREADY_IN_USE),
Toast.LENGTH_SHORT).show();
stopIndicator();
break;
case "ERROR_INVALID_EMAIL":
Toast.makeText(LoginActivity.this, LoginActivity.this.getResources().getString(R.string.ERROR_INVALID_EMAIL),
Toast.LENGTH_SHORT).show();
stopIndicator();
break;
case "ERROR_WEAK_PASSWORD":
Toast.makeText(LoginActivity.this, LoginActivity.this.getResources().getString(R.string.ERROR_WEAK_PASSWORD),
Toast.LENGTH_SHORT).show();
stopIndicator();
break;
case "ERROR_CREDENTIAL_ALREADY_IN_USE":
Toast.makeText(LoginActivity.this, "CREDENTIAL ALREADY IN USE",
Toast.LENGTH_SHORT).show();
stopIndicator();
break;
default:
Toast.makeText(LoginActivity.this, LoginActivity.this.getResources().getString(R.string.Error),
Toast.LENGTH_SHORT).show();
stopIndicator();
}
}else{
errorCode = "";
}
Это работает. если (task.getException () экземпляр FirebaseAuthException) {}