[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 :
- lấy dữ liệu người dùng nhập từ 2 Edittext và kiểm tra
- 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
- Kiểm tra dữ liệu trả về của Firebase và thông báo tới người dùng
- 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://github.com/huuhuybn/Messaggio
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é. 🙂