【发布时间】:2018-01-08 09:52:03
【问题描述】:
我的应用同时使用电子邮件和 Google 身份验证。如果用户注销并尝试登录,则会出现问题。应用程序关闭,再次单击时,用户登录后打开。如果我从登录屏幕按下后退按钮并退出应用程序,再次启动时会按预期工作。 这是我用于退出的代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.getOut) {
mFirebaseAuth.getInstance().signOut();
DetachReadListener();
finishAffinity();
return true;
}
return super.onOptionsItemSelected(item);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SING_IN) {
if (resultCode==RESULT_CANCELED) {
finishAffinity();
}
}
}
Android Monitor 没有显示任何错误,所以我对此一无所知。请帮我解决这个错误。
谢谢!
我的登录密码:
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = mFirebaseAuth.getCurrentUser();
if (user!=null) {
uid = user.getUid();
if (user.getPhotoUrl()!=null) {
avatarurl = user.getPhotoUrl().toString();
RoundedBitmapDrawable drawable = RoundedBitmapDrawableFactory.create(getApplicationContext().getResources(),getImageBitmap(avatarurl));
drawable.setCircular(true);
imgavatar.setImageDrawable(drawable);
// imgavatar.setImageBitmap(getImageBitmap(avatarurl));
} else
imgavatar.setImageResource(R.drawable.ic_account_black_48dp);
mUsername = user.getDisplayName();
username.setText(mUsername);
AttachReadListener();
DatabaseReference usruid = usersref.child(uid).child("flag");
usruid.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
while (!dataSnapshot.exists()) {
pb.setContentView(R.layout.activity_progress_bar);
pb.requestWindowFeature(Window.FEATURE_NO_TITLE);
pb.show();
}
val = dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
} else {
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setIsSmartLockEnabled(false)
.setTheme(R.style.LoginTheme)
.setLogo(R.drawable.firstlogo)
.setAvailableProviders(Arrays.asList(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build()))
.build(), RC_SING_IN
);
}
}
};
【问题讨论】:
-
请给出更详细的代码
-
你在
finishAffiinity和DetaisReadListener方法中做了什么?此外,请发布您的登录代码。 -
您好,谢谢!我通过添加登录代码编辑了我的帖子。
标签: android firebase firebase-authentication