Android Firebase注册问题

Android Firebase注册问题,android,firebase-realtime-database,firebase-authentication,Android,Firebase Realtime Database,Firebase Authentication,这是我用于注册的代码,但createUserWithEmailAndPassword onComplete listener注册活动会在执行uploadFile之前自动转到登录活动logcat中没有错误: public class RegestrationActivity extends BaseActivity implements View.OnClickListener { ActivityRegestrationBinding mBinding; FirebaseSto

这是我用于注册的代码,但createUserWithEmailAndPassword onComplete listener注册活动会在执行uploadFile之前自动转到登录活动logcat中没有错误:

public class RegestrationActivity extends BaseActivity implements View.OnClickListener {

    ActivityRegestrationBinding mBinding;
    FirebaseStorage mStorage;
    private File selectedImage;
    private FirebaseAuth auth;
    private DatabaseReference mDatabase;

    public static void launch(AppCompatActivity activity) {
        Intent intent = new Intent(activity, RegestrationActivity.class);
        activity.startActivity(intent);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mBinding = DataBindingUtil.setContentView(this, R.layout.activity_regestration);
        initViews();
    }

    private void initViews() {
        auth = FirebaseAuth.getInstance();
        mStorage = FirebaseStorage.getInstance();
        mDatabase = FirebaseDatabase.getInstance().getReference();
        mBinding.btnSignUp.setOnClickListener(this);
        mBinding.ivPic.setOnClickListener(this);
        mBinding.tvLogIn.setOnClickListener(this);

    }



    public void selectImageDialog() {

        Dexter.withActivity(this)
                .withPermissions(
                        Manifest.permission.CAMERA,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE
                ).withListener(new MultiplePermissionsListener() {
            @Override
            public void onPermissionsChecked(MultiplePermissionsReport report) {
                if (report.areAllPermissionsGranted()) {
                    final CharSequence[] charGender = {getString(R.string.check_in_detail_option_camera), getString(R.string.check_in_detail_option_gallery)};
                    AlertDialog.Builder alert = new AlertDialog.Builder(RegestrationActivity.this);
                    alert.setTitle(getString(R.string.check_option));
                    alert.setItems(charGender, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            if (which == 0) {
                                EasyImage.openCamera(RegestrationActivity.this, 0);
                            } else if (which == 1) {
                                EasyImage.openGallery(RegestrationActivity.this, 0);
                            }
                        }
                    });
                    alert.show();
                } else if (!report.areAllPermissionsGranted()) {
                    if (report.isAnyPermissionPermanentlyDenied()) {
                        showPermissionSettingDialog(getResources().getString(R.string.permission_never_ask_message));
                    } else {
                        showPermissionDeniedDialog(getResources().getString(R.string.permission_denied_message));
                    }
                } else if (report.isAnyPermissionPermanentlyDenied()) {
                    showPermissionSettingDialog(getResources().getString(R.string.permission_never_ask_message));
                }

            }

            @Override
            public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {
                Logger.e("show Rationale");
                token.continuePermissionRequest();
            }
        }).check();

    }


    public void showPermissionSettingDialog(String message) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(R.string.permission_required);
        builder.setMessage(message);
        builder.setPositiveButton(R.string.app_settings, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Intent intent = new Intent();
                intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                intent.addCategory(Intent.CATEGORY_DEFAULT);
                intent.setData(Uri.parse("package:" + getPackageName()));
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
                startActivity(intent);
                dialog.dismiss();
            }
        });
        builder.setNegativeButton(R.string.str_cancel, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                stopProgress();
            }
        });
        builder.create().show();
    }

    public void showPermissionDeniedDialog(String message) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(R.string.permission_required);
        builder.setMessage(message);
        builder.setPositiveButton(R.string.re_try, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                selectImageDialog();
            }
        });
        builder.setNegativeButton(R.string.i_am_sure, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        builder.create().show();
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        EasyImage.handleActivityResult(requestCode, resultCode, data, this, new DefaultCallback() {
            @Override
            public void onImagePickerError(Exception e, EasyImage.ImageSource source, int type) {
                e.printStackTrace();
            }

            @Override
            public void onImagesPicked(List<File> imageFiles, EasyImage.ImageSource source, int type) {
                onPhotosReturned(imageFiles);
            }

            @Override
            public void onCanceled(EasyImage.ImageSource source, int type) {
                if (source == EasyImage.ImageSource.CAMERA) {
                    File photoFile = EasyImage.lastlyTakenButCanceledPhoto(RegestrationActivity.this);
                    if (photoFile != null) photoFile.delete();
                }
            }
        });

    }

    private void onPhotosReturned(List<File> returnedPhotos) {
        Logger.Error("Path : " + returnedPhotos.get(0).getAbsolutePath());
        selectedImage = returnedPhotos.get(0);
        try {
            selectedImage = new Compressor(this).compressToFile(selectedImage);
            glideLoader.loadCircleUserImageFromFile(selectedImage, mBinding.ivPic);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btnSignUp:
                isValid();
                break;
            case R.id.ivPic:
                selectImageDialog();
                break;
            case R.id.tvLogIn:
                finish();
                break;
        }
    }

    public void isValid() {
        if (selectedImage==null) {
            showErrorSnackBar(getString(R.string.validation_select_image));
        } else if (mBinding.etName.getText().toString().trim().isEmpty()) {

            showErrorSnackBar(getString(R.string.validation_empty_name));
            mBinding.etName.requestFocus();
        } else if (mBinding.etEmail.getText().toString().trim().isEmpty()) {

            showErrorSnackBar(getString(R.string.validation_empty_email));
            mBinding.etEmail.requestFocus();
        } else if (!Patterns.EMAIL_ADDRESS.matcher(mBinding.etEmail.getText().toString().trim()).matches()) {
            showErrorSnackBar(getString(R.string.validation_invalid_email));
            mBinding.etEmail.requestFocus();
        } else if (mBinding.etPassword.getText().toString().trim().isEmpty()) {
            showErrorSnackBar(getString(R.string.validation_password));
            mBinding.etPassword.requestFocus();
        } else if (mBinding.etPassword.getText().toString().trim().length() < 6) {
            showErrorSnackBar(getString(R.string.validation_short_password));
            mBinding.etPassword.requestFocus();
        } else if (!isConnectedToInternet()) {
            showSnackBar(getString(R.string.no_internet));
        } else {
            fireBaseRegistration();

        }
    }

    private void fireBaseRegistration() {

        showProgress();
        //create user
        auth.createUserWithEmailAndPassword(mBinding.etEmail.getText().toString().trim(), mBinding.etPassword.getText().toString().trim())
                .addOnCompleteListener(RegestrationActivity.this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {

                        if (!task.isSuccessful()) {
                            Toast.makeText(RegestrationActivity.this, "Authentication failed." + task.getException().getLocalizedMessage(),
                                    Toast.LENGTH_SHORT).show();
                        } else {
                                uploadFile();
                        }
                    }
                });
    }

    private void uploadFile() {
        Uri file = Uri.fromFile(selectedImage);
        final StorageReference ref = mStorage.getReference().child(" ProfilePics/" + auth.getUid() + "/" + auth.getUid() + ".jpg");
        UploadTask uploadTask = ref.putFile(file);

        Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
            @Override
            public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
                if (!task.isSuccessful()) {
                    throw task.getException();
                }
                return ref.getDownloadUrl();
            }
        }).addOnCompleteListener(new OnCompleteListener<Uri>() {
            @Override
            public void onComplete(@NonNull Task<Uri> task) {
                if (task.isSuccessful()) {
                    Uri downloadUri = task.getResult();
                    Map<String, Object> newUserDetails = new HashMap<String, Object>();
                    newUserDetails.put("email", mBinding.etEmail.getText().toString().trim());
                    newUserDetails.put("name", mBinding.etName.getText().toString().trim());
                    newUserDetails.put("profileurl", downloadUri.toString());
                    mDatabase.child("users").child(auth.getUid()).setValue(newUserDetails);
                    stopProgress();
                    new MessageDialog(getApplicationContext())
                            .setTitle(getString(R.string.app_name))
                            .setMessage(getString(R.string.account_created_successfully))
                            .setPositiveButton(getString(R.string.str_Ok), new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    dialogInterface.dismiss();
                                    finish();
                                }
                            }).show();

                } else {
                    stopProgress();
                    showErrorSnackBar(task.getException().getMessage());
                }
            }
        });
    }
}
公共类RegestrationActivity扩展BaseActivity实现View.OnClickListener{
活性调节结合结合结合结合;
火基存储;
私有文件选择图像;
私有FirebaseAuth-auth;
私有数据库参考数据库;
公共静态无效启动(AppCompatActivity活动){
意向意向=新意向(activity,RegestrationActivity.class);
活动。开始触觉(意图);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mBinding=DataBindingUtil.setContentView(this,R.layout.activity\u regestration);
initViews();
}
私有void initViews(){
auth=FirebaseAuth.getInstance();
mStorage=FirebaseStorage.getInstance();
mDatabase=FirebaseDatabase.getInstance().getReference();
mBinding.btnSignUp.setOnClickListener(这个);
mBinding.ivPic.setOnClickListener(this);
mBinding.tvLogIn.setOnClickListener(这个);
}
public void selectImageDialog(){
Dexter.withActivity(本)
.具有权限(
舱单,许可,摄像机,
Manifest.permission.WRITE\u外部存储
).withListener(新的MultiplePermissionsListener(){
@凌驾
已检查许可证上的公共无效(多个许可证报告){
if(report.areAllPermissionsGranted()){
final CharSequence[]charGender={getString(R.string.check\u in\u detail\u option\u camera),getString(R.string.check\u in\u detail\u option\u gallery)};
AlertDialog.Builder alert=新建AlertDialog.Builder(RegestrationActivity.this);
setTitle(getString(R.string.check_选项));
alert.setItems(充电器,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
if(which==0){
EasyImage.openCamera(RegestrationActivity.this,0);
}else if(其中==1){
EasyImage.openGallery(RegestrationActivity.this,0);
}
}
});
alert.show();
}如果(!report.areAllPermissionsGranted()){
if(report.isAnyPermissionPermanentlyDenied()){
showPermissionSettingDialog(getResources().getString(R.string.permission\u never\u ask\u message));
}否则{
showPermissionDeniedDialog(getResources().getString(R.string.permission\u denied\u message));
}
}else if(report.isAnyPermissionPermanentlyDenied()){
showPermissionSettingDialog(getResources().getString(R.string.permission\u never\u ask\u message));
}
}
@凌驾
public void onPermissionRationalAlleshouldbeshown(列出权限、PermissionToken令牌){
Logger.e(“显示理由”);
token.continuePermissionRequest();
}
}).检查();
}
public void showPermissionSettingDialog(字符串消息){
AlertDialog.Builder=新建AlertDialog.Builder(此);
builder.setTitle(需要R.string.permission_);
builder.setMessage(message);
setPositiveButton(R.string.app_设置,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
意图=新意图();
意图.设置动作(设置.动作\应用程序\详细信息\设置);
intent.addCategory(intent.CATEGORY\u默认值);
setData(Uri.parse(“包:+getPackageName());
intent.addFlags(intent.FLAG\u活动\u新任务);
intent.addFlags(intent.FLAG\u活动\u否\u历史记录);
intent.addFlags(intent.FLAG\u活动\u从最近的事件中排除\u);
星触觉(意向);
dialog.dismise();
}
});
setNegativeButton(R.string.str_cancel,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
dialog.dismise();
stopProgress();
}
});
builder.create().show();
}
public void showPermissionDeniedDialog(字符串消息){
AlertDialog.Builder=新建AlertDialog.Builder(此);
builder.setTitle(需要R.string.permission_);
builder.setMessage(message);
setPositiveButton(R.string.re_-try,new DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
选择ImageDialog();
}
});
setNegativeButton(R.string.i_________________________________{
@凌驾
public void onClick(DialogInterface dialog,int which){
dialog.dismise();
}
});
builder.create().show();
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
handleActivityResult(请求代码、结果代码、数据、this、新的DefaultCallback(){
@凌驾
public void onImagePickerError(异常e,EasyImage.ImageSource源,int类型){
e、 printStackTrace();
}
@凌驾
公共空间