У меня есть ProfileActivity
, где пользователи получают доступ к CollegeActivity
, если значение name
в базе данных Firebase Realtime этого пользователя равно Jhon
, а значение permission
равно yes
.Это моя структура базы данных.
Users
|-name: "Jhon"
|-userID
|-permission: "yes"
Отлично работает, когда подключен к интернету.Но как я могу сохранить и значение name
, и значение permission
в качестве кэша, чтобы, если пользователь находится в автономном режиме, ProfileActivity
мог заглянуть в кэш и предоставить доступ к CollegeActivity
, если последний сеанс удовлетворял условию?
Это мой ProfileActivity
:
public class ProfileActivity extends AppCompatActivity {
private FirebaseAuth mAuth;
private DatabaseReference mDatabaseRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
mAuth = FirebaseAuth.getInstance();
}
@Override
protected void onStart() {
super.onStart();
FirebaseUser user = mAuth.getCurrentUser();
String userID = user.getUid();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users");
ref.child(userID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String identityCheck = dataSnapshot.child("name").getValue().toString();
if (identityCheck.equals("Jhon")) {
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users").child(userID);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String userpermission = dataSnapshot.child("college").getValue().toString();
if (userpermission.equals("yes")) {
startActivity(new Intent(ProfileActivity.this, CollegeActivity.class));
}
}
@Override
public void onCancelled(DatabaseError firebaseError) {
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}