firebase addvalueeventlistener未在一个设备中触发

时间:2017-08-22 21:21:40

标签: java android firebase firebase-realtime-database firebase-authentication

我遇到一个特定设备的问题(我的主要设备是galaxy s7)

如下所述: Firebase addValueEventListener not being triggered

addvalueeventlistener赢得了触发器,并且根据建议我检查了我是否有连接使用它:

https://firebase.google.com/docs/database/android/offline-capabilities#section-connection-state

我实际上没有连接

问题在于,一台开发设备能够很好地工作,而另一台则不然。

我在这里缺少什么?

这是代码:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
localCountryDB = ((GlobalState) this.getApplication()).getCountry();
mAuth = FirebaseAuth.getInstance();
mFirebaseDatabase = FirebaseDatabase.getInstance();
myRef = mFirebaseDatabase.getReference().child(localCountryDB);
FirebaseUser user = mAuth.getCurrentUser();
if (mAuth.getCurrentUser()!=null)
userID = user.getUid();

DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
System.out.println("connected");
} else {
System.out.println("not connected");
}
}

@Override
public void onCancelled(DatabaseError error) {
System.err.println("Listener was cancelled");
}
});

valueEventListener = myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
getUserData(dataSnapshot);
}



@Override
public void onCancelled(DatabaseError databaseError) {

String Hello;
Hello="a";
}
});

2 个答案:

答案 0 :(得分:3)

我发现了问题

问题在于:

mAuth.getCurrentUser()

实际上已经返回了一个用户,一个已经从身份验证数据中删除的旧用户,所以我必须

mAuth.signout()

一旦我这样做,连接就是"连接"再次和ValueEventListener触发

问题在于我不知道如何捕捉这个错误,因为触发器不会触发。

答案 1 :(得分:1)

试试这个

  • 将互联网权限添加到清单

  • 将firebase数据库安全规则设置为true