Я пытаюсь добавить некоторые контактные данные в базу данных реального времени firebase отдельно от пользовательских данных. Это моя древовидная структура:
Я пытаюсь получить значение name
пользователя (например, UID-1
) и в дочернем элементе Contact
создать нового дочернего элемента этого же пользователя и записать значение name
, а также два другие значения (contatcMethod
и phoneValue
).
Это мой код (у меня есть RadioGroup
для contactMethod
):
public class ContactDetails extends AppCompatActivity {
RadioGroup radioGroup;
RadioButton radioButton;
private EditText phoneNumber;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
mAuth = FirebaseAuth.getInstance();
radioGroup = findViewById(R.id.radioGroup);
phoneNumber = findViewById(R.id.phoneNumber);
Button submit = findViewById(R.id.submit);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int radioId = radioGroup.getCheckedRadioButtonId();
radioButton = findViewById(radioId);
contact();
}
});
}
private void contact() {
FirebaseUser user = mAuth.getCurrentUser();
String userID = user.getUid();
final String phoneValue = phoneNumber.getText().toString().trim();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users");
ref.child(userID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
final String name = dataSnapshot.child("name").getValue().toString();
UserContact userContact = new UserContact(
contactMethod,
phoneValue,
name
);
FirebaseDatabase.getInstance().getReference("Contact")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(userContact).addOnCompleteListener(new OnCompleteListener < Void > () {
@Override
public void onComplete(@NonNull Task < Void > task) {
if (task.isSuccessful()) {
Toast.makeText(ContactDetails.this, "Saved Successfully", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(ContactDetails.this, "Not successful", Toast.LENGTH_LONG).show();
}
}
});
}
});
}
}
А моя UserContact
Java это:
package com.rimikri.smartpedi;
public class UserContact {
public String contactMethod, phoneValue, name;
public UserContact() {
}
public UserContact(String contactMethod, String phoneValue, String name) {
this.contactMethod = contactMethod;
this.phoneValue = phoneValue;
this.name = name;
}
}
Но мне не удается записать какие-либо данные в базу данных с этим кодом. Он возвращает тост «Не удачно». Я был бы очень признателен, чтобы узнать, что я делаю неправильно.
У меня ошибка:
DatabaseError: В доступе отказано