Не могу выбрать изображение из галереи в приложении для Android в моей активности регистрации - PullRequest
0 голосов
/ 01 декабря 2018

Я не могу выбрать изображение из галереи, когда использую его в процессе регистрации, как показано ниже, и пытаюсь отправить его в базу данных реального времени firebase, но мне не удалось, но когда я создаю действие, чтобы вставить только изображение и никаких пользовательских данныхк базе данных в реальном времени, тогда мне это удается, но в процессе регистрации я хочу выбрать изображение с пользовательскими данными, а также хочу отправить его в базу данных реального времени firebase, но я не знаю, как это сделать

, и вот мой registrationActivity.java

public class RegistrationActivity extends AppCompatActivity{

private EditText userName, userPassword, userEmail, userAge;
private Button regButton;
private TextView userLogin;
private FirebaseAuth firebaseAuth;
private ImageView userProfilePic;
String email, name, age, password;
private FirebaseStorage firebaseStorage;
private static int PICK_IMAGE = 123;
Uri imagePath;
private StorageReference storageReference;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == PICK_IMAGE && resultCode == RESULT_OK && data.getData() != null){
        imagePath = data.getData();
        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imagePath);
            userProfilePic.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    super.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_registration);
    setupUIViews();
    firebaseAuth = FirebaseAuth.getInstance();
    firebaseStorage = FirebaseStorage.getInstance();
    storageReference = firebaseStorage.getReference();
    userProfilePic.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            Intent intent = new Intent();
            intent.setType("images/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Select Image"), PICK_IMAGE);
        }
    });

    regButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(validate()){
                //Upload data to the database
                String user_email = userEmail.getText().toString().trim();
                String user_password = userPassword.getText().toString().trim();
                firebaseAuth.createUserWithEmailAndPassword(user_email, user_password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if(task.isSuccessful()){
                            //sendEmailVerification();
                            sendUserData();
                            firebaseAuth.signOut();
                            Toast.makeText(RegistrationActivity.this,"Successfully Registered, Upload complete!", Toast.LENGTH_SHORT).show();
                            finish();

                            startActivity(new Intent(RegistrationActivity.this, MainActivity.class));
                        }else{
                            Toast.makeText(RegistrationActivity.this, "Registration Failed", Toast.LENGTH_SHORT).show();
                        }

                    }
                });
            }
        }
    });
    userLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(RegistrationActivity.this, MainActivity.class));
        }
    });
}

private void setupUIViews(){

    userName = (EditText)findViewById(R.id.etUserName);
    userPassword = (EditText)findViewById(R.id.etUserPassword);
    userEmail = (EditText)findViewById(R.id.etUserEmail);
    regButton = (Button)findViewById(R.id.btnRegister);
    userLogin = (TextView)findViewById(R.id.tvUserLogin);
    userAge = (EditText)findViewById(R.id.etAge);
    userProfilePic = (ImageView)findViewById(R.id.ivProfile);

}

private Boolean validate(){

    Boolean result = false;
    name = userName.getText().toString();
    password = userPassword.getText().toString();
    email = userEmail.getText().toString();
    age = userAge.getText().toString();

    if(name.isEmpty() || password.isEmpty() || email.isEmpty() || age.isEmpty() || imagePath == null){

        Toast.makeText(this, "Please enter all the details", Toast.LENGTH_SHORT).show();
    }else{
        result = true;
    }

    return result;
}
private void sendEmailVerification(){
    FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
    if(firebaseUser!=null)
        firebaseUser.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
               if(task.isSuccessful()){
                   sendUserData();
                   Toast.makeText(RegistrationActivity.this, "Successfully Registered, Verification mail sent!", Toast.LENGTH_SHORT).show();
                   firebaseAuth.signOut();
                   finish();
                   startActivity(new Intent(RegistrationActivity.this, MainActivity.class));
               }else{
                   Toast.makeText(RegistrationActivity.this, "Verification mail has'nt been sent!", Toast.LENGTH_SHORT).show();
               }
            }
        });
    }
}

private void sendUserData(){
    FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
    DatabaseReference myRef = firebaseDatabase.getReference(firebaseAuth.getUid());
    StorageReference imageReference = storageReference.child(firebaseAuth.getUid()).child("Images").child("Profile Pic");  //User id/Images/Profile Pic.jpg
    UploadTask uploadTask = imageReference.putFile(imagePath);
    uploadTask.addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
           Toast.makeText(RegistrationActivity.this, "Upload failed!", Toast.LENGTH_SHORT).show();
        }
    }).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
        @Override
       public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
            Toast.makeText(RegistrationActivity.this, "Upload successful!", Toast.LENGTH_SHORT).show();
       }

    });
    UserProfile userProfile = new UserProfile(age, email, name);
    myRef.setValue(userProfile);
}

}

Это всегда дает мне предупреждение, что, пожалуйста, заполните все детали, так как я не могу выбрать изображение из галереи

1 Ответ

0 голосов
/ 01 декабря 2018

Я просмотрел ваш код и не смог найти в нем класс OnActivityResult, поэтому создайте protected void onActivityResult(int requestCode, int resultCode, Intent data) {}, который поможет вам получить данные результатов после того, как вы выберете любое изображение из своего галереи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...