如何从broadcastreceiver使用firebase数据库

Rob*_*hof 7 android firebase-authentication firebase-realtime-database

我正在尝试使用来自a的Firebase数据库BroadcastReceiver来获取一些数据.不幸的是用户null有时候,这意味着我无法使用UID获取数据.

@Override
public void onReceive(final Context context, Intent intent) { 
    FirebaseAuth.getInstance().addAuthStateListener(new FirebaseAuth.AuthStateListener() {
                @Override
                public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                    FirebaseUser user = firebaseAuth.getCurrentUser();
                    if(user != null){
                        //sometimes not null
                    }else{
                        //sometimes null
                    }
                }
     });
}
Run Code Online (Sandbox Code Playgroud)

FirebaseAuth.getInstance().getCurrentUser就是null有时.而且,我没有在我的内部长时间操作broadcastreceiver.我正在谈论获取一个没有任何节点的opjes.

如何使用Firebase数据库BroadcastReceiver

Rob*_*hof 0

我想我明白了。问题不在于广播接收器,而在于 firebase 刷新令牌。那时用户是null. 像这样的事情有效:

@Override
public void onReceive(final Context context, Intent intent) { 
    FirebaseAuth.getInstance().addAuthStateListener(new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if(user != null){
                    FirebaseAuth.getInstance().removeAuthStateListener(this);
                    //do stuff
                }else{
                    //do nothing
                }
            }
     });
}
Run Code Online (Sandbox Code Playgroud)