在 Android 上读取数据时检测错误

你的读取操作可能无法正常工作的常见原因是你的安全规则拒绝操作,例如因为你未经过身份验证(默认情况下,数据库只能由经过身份验证的用户访问)。

你可以在 logcat 输出中看到这些安全规则违规。但很容易忽视这些。你还可以在自己的代码中处理它们并使它们更突出地显示,这在开发期间尤其有用(因为你的 JSON,规则和代码经常更改)。

要检测 Android 上的失败读取,你必须实现 ChildEventListeneronCancelled 方法:

databaseRef.addChildEventListener(new ChildEventListener() {
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { ... }
    public void onChildChanged(DataSnapshot dataSnapshot, String s) { ... }
    public void onChildRemoved(DataSnapshot dataSnapshot) { ... }
    public void onChildMoved(DataSnapshot dataSnapshot, String s) { ... }
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
});

或者如果你有一个 ValueEventListener

databaseRef.addValueEventListener(new ValueEventListener() {
    public void onDataChange(DataSnapshot dataSnapshot, String s) { ... }
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
});

有了这个代码,在 Android 上读取数据时很难忽略安全性错误。