我正在尝试在Firebase实时数据库中与用户数据分开添加一些联系人数据。这是我的树结构:
我想做的是,获取用户的name
值(例如UID-1
),并在Contact
子级中,创建同一用户的新子级,并写入{{ 1}}值以及其他两个值(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();
}
}
});
}
});
}
}
Java是:
UserContact
但是用此代码无法成功地在数据库中写入任何数据。它正在返回“未成功”的吐司。非常感谢您了解我在做什么。
我遇到的错误是:
DatabaseError:权限被拒绝
答案 0 :(得分:1)
似乎这可能是一个权限问题,因为否则,代码应该可以工作。请尝试以下操作以更新数据库的读写权限。
{
"rules": {
"Users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
},
"Contact": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}