Firebause getCurrentUser().getEmail 返回 null

问题描述

我开发了一个 Android 应用程序,在我的一项活动中,我让用户可以删除他的帐户。

删除过程做了很多事情,在过程的结束,我删除用户本身。

我用这个来做:

new CountDownTimer( 7000,500 ) {
    @Override
    public void onTick(long millisUntilFinished) {
    }

    @Override
    public void onFinish() {

        FirebaseUser user = auth.getCurrentUser();
        AuthCredential credential = EmailAuthProvider.getCredential( user.getEmail(),password );
        user.reauthenticate( credential ).addOnCompleteListener( task -> user.delete() );

        auth.signOut();

        AuthUI.getInstance()
                .signOut( context )
                .addOnCompleteListener( task -> {
                    Intent intent = new Intent( context,MainActivity.class );
                    intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP |
                            Intent.FLAG_ACTIVITY_CLEAR_TASK |
                            Intent.FLAG_ACTIVITY_NEW_TASK );
                    context.startActivity( intent );
                } );

        MainActivity.isDeleted = true;
    }

}.start();

但是,我刚刚收到一位用户的日志,其中说应用程序崩溃的原因是:

 Fatal Exception: java.lang.NullPointerException
Attempt to read from field 'c.d.d.q.j0.i0 c.d.d.q.j0.l0.g' on a null object reference
com.google.firebase.auth.internal.zzx.getEmail (zzx.java:4)
com.xxx.yyyy.PopUps$3.onFinish (PopUps.java:4)
android.os.CountDownTimer$1.handleMessage (CountDownTimer.java:127)
android.os.Handler.dispatchMessage (Handler.java:106)
android.os.Looper.loop (Looper.java:236)
android.app.ActivityThread.main (ActivityThread.java:7876)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:656)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:967)

我的理解是 user.getEmail 为空。

在所有其他活动中,如果我看到没有用户,我就直接转到主活动。但在这里,它发生在删除过程的最后,整个数据都被删除了,除了用户本身,将他们引导到主要活动,再次登录并返回删除过程是有问题的。

当我到达这个阶段时,我如何确保有一个有效的用户

我还认为可能是因为我设置了 7000,用于确保在以 user.delete 结束之前删除整个数据库

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...