这个人有一个与我类似的问题Firebase for android 突然无法在我的测试设备中工作,但从未得到答复,并且评论中的人似乎也有类似的问题。
我可以使用 nodejs 访问(和更新)我的 firebase 中的值,但是当我尝试从 android 执行此操作时,logcat 或其他任何内容都没有失败,它只是不更新数据库中的任何内容。
我检查了数据库引用,它与我的nodejs脚本中的完全相同,并且我的安全设置是read: true,write: true...它只是没有意义为什么它不再工作了。昨天完全相同的代码运行良好。
有谁知道会发生什么?
android firebase firebase-authentication firebase-realtime-database
在我的代码中,用户使用Google登录到Firebase,如下所述:
https://firebase.google.com/docs/auth/android/google-signin
这很好。
用户打开程序时,它将从firebase数据库加载初始化值。这是代码:
private void loadPrefsFromDB() {
mAuth = FirebaseAuth.getInstance();
user = mAuth.getCurrentUser();
uid = user.getUid();
FirebaseDatabase.getInstance().getReference().child("users").child(uid)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
userPrefs = dataSnapshot.getValue(UserPrefs.class);
updateUI(userPrefs);
Log.d(TAG, "loadPrefsFromDB:onDataChange");
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "loadPrefsFromDB:onCancelled");
}
});
}
Run Code Online (Sandbox Code Playgroud)
当wifi连接关闭时,此方法效果很好,但是如果我打开wifi程序,则该功能不会触发。如果在程序运行时,我单击wifi,然后手机切换到移动数据,我立即登录:
D / MainActivity: loadPrefsFromDB: onDataChange
Run Code Online (Sandbox Code Playgroud)
如果我注销并再次打开wifi,该功能也会被触发。Firebase是否应该处理这种情况?还是我需要以某种方式刷新身份验证?
android firebase firebase-authentication firebase-realtime-database