使用signInWithEmailAndPassword(Firebase身份验证)时,应用崩溃

时间:2018-11-05 12:43:07

标签: android performance android-studio

最近,我被迫重置正在使用的android设备,从那时起,每次尝试注册或登录时,我的应用程序都会崩溃。

在其他设备或仿真器中,所有内容均应按s的方式工作,因此问题不在代码中(但如果有必要,我将其添加)。 Android设备是:Lenovo S90-u。

错误:

E/UncaughtException: java.lang.NullPointerException
    at com.google.android.gms.internal.zzdtp.zzb(Unknown Source)
    at com.google.android.gms.internal.zzdtw.zzb(Unknown Source)
    at com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(Unknown Source)
    at easytobook.com.easytobook.Account.LoginFragment$2.onClick(LoginFragment.java:90)
    at android.view.View.performClick(View.java:4460)
    at android.view.View$PerformClick.run(View.java:18649)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5345)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:855)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:671)
    at dalvik.system.NativeStart.main(Native Method)

E/AndroidRuntime: FATAL EXCEPTION: main
Process: easytobook.com.easytobook, PID: 7734
java.lang.NullPointerException
    at com.google.android.gms.internal.zzdtp.zzb(Unknown Source)
    at com.google.android.gms.internal.zzdtw.zzb(Unknown Source)
    at com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(Unknown Source)
    at easytobook.com.easytobook.Account.LoginFragment$2.onClick(LoginFragment.java:90)
    at android.view.View.performClick(View.java:4460)
    at android.view.View$PerformClick.run(View.java:18649)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5345)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:855)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:671)
    at dalvik.system.NativeStart.main(Native Method)


the code:

public class LoginFragment extends Fragment{
private EditText inputEmail, inputPassword;
private ProgressBar progressBar;
private Button btnLogin, btnReset;

private FirebaseAuth auth;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate( R.layout.fragment_login, container, false );

    auth = FirebaseAuth.getInstance(); //Get Firebase auth instance

    if (auth.getCurrentUser() != null)
    {
        startActivity(new Intent(getActivity(), MainActivity.class));
        getActivity().finish();
    }

    //setContentView(R.layout.fragment_login);
    inputEmail = (EditText) view.findViewById(R.id.email);
    inputPassword = (EditText) view.findViewById(R.id.password);
    progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
    btnLogin = (Button) view.findViewById(R.id.btn_login);
    btnReset = (Button) view.findViewById(R.id.btn_reset_password);

    auth = FirebaseAuth.getInstance(); //Get Firebase auth instance


    btnReset.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            startActivity(new Intent(getActivity(), ResetPasswordActivity.class));
            getActivity().finish();
        }
    });

    btnLogin.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            String email = inputEmail.getText().toString();
            final String password = inputPassword.getText().toString();

            if (TextUtils.isEmpty(email))  //email check
            {
                Toast.makeText(getActivity().getApplicationContext(), "enter mail", Toast.LENGTH_SHORT).show();
                return;
            }

            if (TextUtils.isEmpty(password))  //password check
            {
                Toast.makeText(getActivity().getApplicationContext(), "enter password", Toast.LENGTH_SHORT).show();
                return;
            }

            progressBar.setVisibility(View.VISIBLE);

            //authenticate user
            auth.signInWithEmailAndPassword(email, password).addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>()
                    {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task)
                        {
                            // If sign in fails, display a message to the user. If sign in succeeds
                            // the auth state listener will be notified and logic to handle the
                            // signed in user can be handled in the listener.
                            progressBar.setVisibility(View.GONE);

                            try
                            {
                                if (!task.isSuccessful()) // there was an error
                                {
                                    Toast.makeText(getActivity().getApplicationContext(), getString(R.string.auth_failed), Toast.LENGTH_LONG).show();
                                }
                                else {
                                    //move to the next screen
                                    Intent intent = new Intent(getActivity(), ProfileActivity.class);
                                    startActivity(intent);
                                    getActivity().finish();
                                }
                            }
                            catch(Exception e)
                            {
                                Toast.makeText(getActivity().getApplicationContext(),e.getMessage(), Toast.LENGTH_LONG).show();
                            }

                        }
                    });
        }
    });

    return view;
}

}

1 个答案:

答案 0 :(得分:0)

感谢@BobSnyder(在另一个问题中找到了他对我的问题的回答)。 问题出在api上。您必须安装带有(Google API)附件的API。我的设备上的google服务已过期。