[Android Nâng Cao] Ứng dụng chat với Firebase – Phần 4

Hi các em, trong bài hướng dẫn này chúng ta cùng thực hiện chức năng cho màn hình Login nhé

Trên màn hình Login các em bắt sự kiện click vào nút Sign In với nội dung code xử lý theo logic sau :

  1. lấy dữ liệu người dùng nhập từ 2 Edittext và kiểm tra
  2. Gửi dữ liệu lên Firebase Database Realtime đã kết nối ở bài trước xem thông tin user có tồn tại không
  3. Kiểm tra dữ liệu trả về của Firebase và thông báo tới người dùng
  4. Nếu thành công thì mở màn hình Home, ngược lại thông báo lỗi tới người dùng bằng Toast hoặc AlertDialog

Câu lệnh xử lý Login tương tự như Sign Up. Anh mô tả thông qua sơ đồ như sau :

Chi tiết câu lệnh như sau :

 public void signIn(View view) {

        final String username = edtUsername.getText().toString();
        final String password = edtPassword.getText().toString();

// câu lệnh kiểm tra dữ liệu, cắt khoảng trắng 2 đầu dữ liệu học viên // tự luyện tập  

        FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();

        // truy vấn vào nhánh username mà người dùng nhập 
        DatabaseReference users = firebaseDatabase.getReference(USERS).child(username);

        users.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (dataSnapshot.getValue() == null) {

                    Toast.makeText(LoginActivity.this,
                            getString(R.string.notify_user_is_not_exists), Toast.LENGTH_SHORT).show();
                } else {

                    // lấy dữ liệu từ dataSnapshot gán vào model User,
                    // lưu ý : biến ở User cần trùng khớp với tên các giá trị trên firebase 
                    User user = dataSnapshot.getValue(User.class);

// so sánh mật khẩu người dùng nhập và dữ liệu trên firebase 
                    if (user.password.equals(password)) {

                        startActivity(new Intent(LoginActivity.this, HomeActivity.class));

                    } else {
// thông báo sai mật khẩu 
                        Toast.makeText(LoginActivity.this, getString(R.string.notify_wrong_password), Toast.LENGTH_SHORT).show();
                    }
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

Các em lưu ý : ở màn hình Login thường có chức năng Remember Password và nhớ trạng thái đăng nhập. Để thực hiện chức năng này các em cần tự triển khai 1 class sử dụng SharedPreference hoặc 1 cơ chế lưu dữ liệu khác. Phần này a sẽ viết bài mô tả riêng nhé .

Link code mẫu bài 4 : https://link5s.co/CodeMau

Cám ơn các em đã theo dõi khóa học. Mọi thắc mắc các em gửi bài trên nhóm nhé. 🙂