Сохранить два значения из базы данных Firebase для автономного использования - PullRequest
0 голосов
/ 22 октября 2018

У меня есть 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) {

            }
        });
    }
}

1 Ответ

0 голосов
/ 22 октября 2018

Вы можете использовать SharedPreferences при первом доступе или собственный механизм кэширования firebase , либо простой файл или sqlite (место для более легкого доступа к курсору sqllite).Существуют различные способы кэширования значений для сохранения в зависимости от размера данных и требований приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...