'FirebaseAuth Returning Null for current user even when user logged in
I have a sign in page and after successfully sign in it's redirect into another activity. But whenever I try to get current user in an activity by authStateListener it's returning current user null. I don't know how I got signOut automatically? In this period my current User should be not null. How can I solve this issue?
Here is my SignIn.java
public class SignIn extends AppCompatActivity {
Button signIn,forgetPass;
TextView backToSignUp,number,password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_in);
signIn=findViewById(R.id.signInButtonId);
forgetPass=findViewById(R.id.forgetPassButtonId);
backToSignUp=findViewById(R.id.signUpBack);
number=findViewById(R.id.signInNumberId);
password=findViewById(R.id.signInPasswordId);
signIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String _phone = "+88"+number.getText().toString().trim();
final String _password = password.getText().toString().trim();
if (_phone.isEmpty()) {
number.setError("Enter Your Phone Number");
number.requestFocus();
return;
}
if (_password.isEmpty()) {
password.setError("Enter a password");
password.requestFocus();
return;
}
DatabaseReference reference= FirebaseDatabase.getInstance().getReference("BloodBank_users");
Query checkUser=reference.orderByChild("phone").equalTo(_phone);
checkUser.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
number.setError(null);
number.setEnabled(true);
String passwordFromDB = snapshot.child(_phone).child("password").getValue(String.class);
if (passwordFromDB.equals(_password)) {
password.setError(null);
password.setEnabled(true);
SharedPreferences.Editor editor = getSharedPreferences("name", MODE_PRIVATE).edit();
editor.putString("phone", _phone);
editor.putBoolean("isLoggedIn", true);
editor.apply();
Intent intent = new Intent(SignIn.this, BloodBank.class);
startActivity(intent);
finish();
} else {
password.setError("Wrong Password Or User Name");
password.requestFocus();
}
}
else {
number.setError("This Number Is Not Registered");
number.requestFocus();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
});
backToSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent= new Intent(SignIn.this,SignUp.class);
startActivity(intent);
}
});
}
}
Here is my Profile.Java
public class Profile extends AppCompatActivity {
NavigationView nav;
DrawerLayout drawerLayout;
Toolbar toolbar;
ActionBarDrawerToggle toggle;
TextView name,blood;
TextInputEditText name2,gender,number,address;
Button updateBtn;
private FirebaseAuth firebaseAuth;
FirebaseAuth.AuthStateListener mAuthListener;
@SuppressLint("SetTextI18n")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
//ALl Hocks
name = findViewById(R.id.userNameId);
blood = findViewById(R.id.bloodId);
name2 = findViewById(R.id.userNameId2);
gender = findViewById(R.id.userGenderId);
number = findViewById(R.id.userPhoneId);
address = findViewById(R.id.userAddressId);
updateBtn = findViewById(R.id.updateButtonId);
firebaseAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener(){
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth){
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if(user!=null){
Toast.makeText(Profile.this, "User Exist", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(Profile.this, "No User Available", Toast.LENGTH_SHORT).show();
}
}
};
//For Drawer Layout
toolbar = findViewById(R.id.toolbarId);
setSupportActionBar(toolbar);
nav = findViewById(R.id.navigationId);
drawerLayout = findViewById(R.id.drawerId);
toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
nav.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_home:
startActivity(new Intent(getApplicationContext(), Home.class));
finish();
break;
case R.id.menu_hospital:
startActivity(new Intent(getApplicationContext(), Hospital1.class));
finish();
break;
case R.id.menu_bloodbank:
startActivity(new Intent(getApplicationContext(), BloodBank.class));
finish();
break;
case R.id.menu_ambulance:
startActivity(new Intent(getApplicationContext(), Ambulance.class));
finish();
break;
case R.id.menu_logOut:
firebaseAuth.getInstance().signOut();
SharedPreferences prefers =getSharedPreferences("name", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefers.edit();
editor.clear();
editor.apply();
startActivity(new Intent(getApplicationContext(), Home.class));
finish();
break;
}
return true;
}
});
//For Drawer Layout
}
@Override
protected void onStart() {
super.onStart();
firebaseAuth.addAuthStateListener(mAuthListener);
}
@Override
protected void onResume() {
super.onResume();
firebaseAuth.addAuthStateListener(mAuthListener);
}
@Override
protected void onStop() {
super.onStop();
firebaseAuth.removeAuthStateListener(mAuthListener);
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
