我正在尝试从我的firebase数据库中读取并将其与适配器一起放入Recyclerview,但每次我都知道:
08-20 18:26:53.754 3430-3653/blabla.com.notescloud W/SyncTree: Listen at / failed: DatabaseError: Permission denied
08-20 18:26:53.764 3430-3430/blabla.com.notescloud W/FirebaseRecyclerAdapter: com.google.firebase.database.DatabaseException: Firebase Database error: Permission denied
at com.google.firebase.database.DatabaseError.toException(Unknown Source)
at com.firebase.ui.database.FirebaseRecyclerAdapter.onCancelled(FirebaseRecyclerAdapter.java:175)
at com.firebase.ui.database.ObservableSnapshotArray.notifyListenersOnCancelled(ObservableSnapshotArray.java:135)
at com.firebase.ui.database.FirebaseArray.onCancelled(FirebaseArray.java:129)
at com.google.android.gms.internal.zzdpw.zza(Unknown Source)
at com.google.android.gms.internal.zzdvg.zzbur(Unknown Source)
at com.google.android.gms.internal.zzdvo.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
我的规则还可以(对于记录,写入数据库的工作非常好):
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid",
".read": "$uid === auth.uid"
}
}
}
}
我的数据库:
database 这是我主要活动中的回收设置:
rv = findViewById(R.id.rv_notes); //RecyclerView
rv.setLayoutManager(new LinearLayoutManager(this));
ref = FirebaseDatabase.getInstance().getReference(); // Getting a reference of the database
mAdapter = new FirebaseRecyclerAdapter<Note, NoteHolderView>(
Note.class,
android.R.layout.two_line_list_item,
NoteHolderView.class,
ref) {
@Override
public void populateViewHolder(NoteHolderView holder, Note note, int position) {
holder.setmTitleField(note.getmTitle());
holder.setmTimeField(note.getTimeFormatted(getApplicationContext()));
}
};
rv.setAdapter(mAdapter);
希望你能帮助我解决这个问题。
感谢。
答案 0 :(得分:3)
您正在尝试读取数据库的顶部,并且由于您没有为此指定规则,因此会自动拒绝该规则。 试试这个
ref = FirebaseDatabase.getInstance()
.getReference()
.child("users")
.child(FirebaseAuth.getCurrentUser().getUid());
答案 1 :(得分:0)
您可以通过在Collection前面加上/前缀来访问该收藏集,这意味着它会被调用。就像我尝试过的那样,它工作得很好,希望对您有所帮助。
db=FirebaseDatabase.getInstance();
dbref=db.getReference("/Course_list");
在这段代码中,我在集合中添加了“ /”前缀。