# #android #firebase #firebase-realtime-database #firebase-authentication
Вопрос:
Я реализовал обходной путь в своем приложении для блокировки доступа пользователей, однако, когда я пытаюсь войти в систему пользователя на новом устройстве, приложение выходит из строя.
Это моя схема базы данных (Примечание: пользователь, которого я пытаюсь авторизовать, еще не находится на узле Заблокированные пользователи).:
{ "Blocked Users" : { "RCX2HZXIwlSmMHFgDytf1DgZBgi2" : 0 }, "User Location" : { "latitude" : 37.4035483, "longitude" : -122.097715 }, "Users" : { "RCX2HZXIwlSmMHFgDytf1DgZBgi2" : { "Alert Level" : "Medium", "Emergency Type" : "Natural Disaster", "address" : "Lapaz Tarlac", "emergencyNum" : "0981232387346", "name" : "Rafael Campos", "phoneNum" : "0981233445675" } } }
И вот как я определяю, заблокирован ли пользователь:
private int blockUser; private void userBlock() { if(FirebaseAuth.getInstance().getCurrentUser()!=null){ final DatabaseReference blockRef = FirebaseDatabase.getInstance().getReference().child("Blocked Users").child(currentUser.getUid()); blockRef.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot snapshot) { blockUser = Integer.parseInt(snapshot.getValue().toString()); if (blockUser == 0){ } else if (blockUser == 1){ Intent mainIntent = new Intent().setClass(Fingerprint.this, BlockedNotice.class); startActivity(mainIntent); finish(); } } @Override public void onCancelled(@NonNull DatabaseError error) { } }); } } }
Есть ли какой-либо способ автоматически добавить пользователя в узел Заблокированных пользователей или я делаю это неправильно?
Комментарии:
1. Если приложение выходит из строя, возникает трассировка стека. Пожалуйста, посмотрите это на logcat и добавьте к своему вопросу.
2. Шаг первый-перестать игнорировать ошибки и внедрить
onCancelled
. Как минимум, так и должно бытьpublic void onCancelled(@NonNull DatabaseError databaseError) { throw databaseError.toException(); }
.