Как автоматически добавить пользователя на существующий узел в Firebase при первоначальном входе в систему

# #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(); } .