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

8:38 26/01/2021

Chào các bạn, trong bài hướng dẫn hôm nay chúng ta cùng thực hiện chức năng cho màn hình Login nhé!

Các bạn có thể tham khảo các [Android Nâng Cao] Ứng dụng chat với Firebase phần khác tại đây nhé!

Trên màn hình Login các bạn 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. Chúng ta có thể thấy 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) {

            }

        });

*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 bạn 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://github.com/huuhuybn/Messaggio

Nguồn: Giảng viên Nguyễn Hữu Huy – Bộ môn Công nghệ thông tin Trường Cao đẳng FPT Polytechnic

Cùng chuyên mục

Đăng ký học Fpoly

Bình Luận

Your email address will not be published. Required fields are marked *