跨活动Firebase Android访问用户信息

跨活动Firebase Android访问用户信息,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,在一个活动中,我登录用户,然后它转到另一个活动,在该活动中欢迎用户。我使用内置Firebase方法使用电子邮件/密码登录用户。我在Firebase数据库中有UID,它与一个名称链接。我只是在Firebase中手动输入用户,稍后将实施注册活动。如何在第二个活动中访问用户的UID?您应该将其保存在SharedReferences中,并在第二个活动中检索它,或者通过Intent对象将其传递到第二个活动中 SharedReferences是在应用程序中持久存储数据的简单方法之一。存储在SharedRef

在一个活动中,我登录用户,然后它转到另一个活动,在该活动中欢迎用户。我使用内置Firebase方法使用电子邮件/密码登录用户。我在Firebase数据库中有UID,它与一个名称链接。我只是在Firebase中手动输入用户,稍后将实施注册活动。如何在第二个活动中访问用户的UID?

您应该将其保存在
SharedReferences
中,并在第二个活动中检索它,或者通过
Intent
对象将其传递到第二个活动中


SharedReferences
是在应用程序中持久存储数据的简单方法之一。存储在
SharedReferences
中的数据几乎可以在应用程序的任何地方检索和修改。数据将在手机重启、甚至应用程序卸载后仍然有效,因为它可以由系统进行备份。这是官方的解释。这是一个很好的教程。

除了传递uid之外,您还可以。从该文档页面:

mAuthListener = new FirebaseAuth.AuthStateListener() {
    @Override
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
        FirebaseUser user = firebaseAuth.getCurrentUser();
        if (user != null) {
            // User is signed in
            Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
        } else {
            // User is signed out
            Log.d(TAG, "onAuthStateChanged:signed_out");
        }
        // ...
    }
};
此代码通常会进入一个基类,您可以从该基类派生活动。

只需使用

FirebaseAuth mAuth;

mAuth = FirebaseAuth.getInstance();

FirebaseUser user = mAuth.getCurrentUser();

String UID = user.getUid();

它将自动从以前的活动中获取用户。

您可以展开SharedReferences部分吗?我是否也需要在登录类中添加此内容?我在问候课上试过这个,但没用。这是否从Firebase创建的存储身份验证令牌中获取数据?身份验证状态确实在活动之间保持。您好@FrankvanPuffelen您知道会话保持在哪里吗?也许是共享参考资料?谢谢不管怎样,它存储在共享首选项中,只是选中了,谢谢你确定你的代码不会重新请求服务器获取相同的实例吗?