当我的用户位于Firebase Auth UI的登录屏幕中时,单击“后退”按钮将重新创建屏幕,但它不会从其活动中继承onBackPressed()
方法。有没有办法使该应用程序从Firebase登录屏幕?
答案 0 :(得分:0)
是的,有一种方法可以关闭它并返回到先前的活动,但是您必须通过在需要返回的方法中覆盖onStartActivity方法来做到这一点。
在您要返回的活动中尝试此操作。 注意:此答案是针对使用预建的SignIn用户界面量身定制的,但是在使用自己的UI进行登录时的概念是相同的。
在您希望onBackPressed工作的活动中,您必须调用:
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.build(),
RC_SIGN_IN);
其中RC_SIGN_IN是一个静态最终int变量,例如123。然后,在同一Activity中,您必须像这样重写onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
IdpResponse response = IdpResponse.fromResultIntent(data);
if (resultCode == RESULT_OK) {
// Successfully signed in
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
// ...
} else {
// Sign in failed. If response is null the user canceled the
// sign-in flow using the back button. Otherwise check
// response.getError().getErrorCode() and handle the error.
// ...
if (response == null) {
// User pressed back button. NOTE: This is where the back action is
//taken care of
return;
}
if (response.getError().getErrorCode() == ErrorCodes.NO_NETWORK) {
//Show No Internet Notification
return;
}
if (response.getError().getErrorCode() == ErrorCodes.UNKNOWN_ERROR) {
//Shown Unknown Error Notification
return;
}
}
}
}
您可以检查firebase文档,有关详细信息,请参见Firebase文档。