Попытка загрузить изображение в Firebase в Android Studio - PullRequest
0 голосов
/ 01 ноября 2019

Вот мое действие ProfileCreation, где пользователь может создать имя пользователя, биографию и выбрать свою фотографию:

public class ProfileCreationActivity extends AppCompatActivity {

CircleImageView ivProfile;
EditText etUsername, etDescription;
Button btnFinished, btnProfilePicture;
private FirebaseAuth mAuthCustomize;
private FirebaseDatabase mDatabaseCustom;
private DatabaseReference databaseReference;
private FirebaseUser firebaseUser;
private String currentUserId;
private StorageReference mStorageRef;
private StorageTask uploadTask;
private static final int PICK_IMAGE_REQUEST = 1;
private Uri imageUri;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_profile_creation);

    etUsername = findViewById(R.id.usernameText);
    etDescription = findViewById(R.id.describeText);
    btnFinished = findViewById(R.id.finishedBtn);
    btnProfilePicture = findViewById(R.id.profBtn);
    ivProfile = findViewById(R.id.profPic);

    ivProfile.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
        openFileChooser();
        }
    });

    mAuthCustomize = FirebaseAuth.getInstance();
    currentUserId = mAuthCustomize.getCurrentUser().getUid();
    databaseReference = FirebaseDatabase.getInstance().getReference("Users").child(currentUserId);
    mStorageRef = FirebaseStorage.getInstance().getReference("Userphotos");

  btnFinished.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {

          final String nickname = etUsername.getText().toString().trim();
          final String descriptive = etDescription.getText().toString().trim();


          if(nickname.isEmpty()){
              etUsername.setError("Please enter a username");
              etUsername.requestFocus();
          } else if(nickname.length() < 6){
              Toast.makeText(ProfileCreationActivity.this,"Username too short!",Toast.LENGTH_SHORT).show();
          } else if (descriptive.isEmpty()){
              etDescription.setError("Please describe yourself");
              etDescription.requestFocus();
          } else{
                Query query = FirebaseDatabase.getInstance().getReference().child("Users").orderByChild("username").equalTo(nickname);
                query.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        if (dataSnapshot.getChildrenCount() > 0){
                            Toast.makeText(ProfileCreationActivity.this,"Username already exists!",Toast.LENGTH_SHORT).show();
                        } else {
                            databaseReference.child("username").setValue(nickname);
                            databaseReference.child("description").setValue(descriptive);
                            fileUploader();
                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {
                        Toast.makeText(ProfileCreationActivity.this,"Something went wrong!",Toast.LENGTH_SHORT).show();

                    }
                });

              Toast.makeText(ProfileCreationActivity.this,"Welcome",Toast.LENGTH_SHORT).show();
              Intent goToProfile = new Intent(ProfileCreationActivity.this,ProfilePageActivity.class);
              startActivity(goToProfile);

          }

      }
  });

}

private void openFileChooser(){
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent, PICK_IMAGE_REQUEST);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
    && data != null && data.getData() != null){
        imageUri = data.getData();
        ivProfile.setImageURI(imageUri);
    }

    }

    private String getFileExtension(Uri uri){
        ContentResolver cr = getContentResolver();
        MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
        return  mimeTypeMap.getExtensionFromMimeType(cr.getType(uri));
    }

    private void fileUploader() {
        if(imageUri != null){
            StorageReference fileReference = mStorageRef.child(System.currentTimeMillis() + "." + getFileExtension(imageUri));
            fileReference.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                UploadImage uploadImage = new UploadImage(etUsername.getText().toString().trim(),
                        taskSnapshot.getStorage().getDownloadUrl().toString());
                String uploadId = databaseReference.push().getKey();
                databaseReference.child(uploadId).setValue(uploadImage);
                }
            })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {

                        }
                    });
        } else {
            Toast.makeText(this, "Please choose a photo", Toast.LENGTH_SHORT).show();
        }
    }

    }

Вот мой класс UploadImage:

public class UploadImage {
private String mImageUrl;

public UploadImage() {

}

public UploadImage(String name, String image){
    mImageUrl = image;
}

public String getmImageUrl(){
    return mImageUrl;
}

public void setImageUrl(String imageUrl){
    mImageUrl = imageUrl;
}
}

Имя пользователязагружает, а также описание, но изображение, похоже, не загружается в мое хранилище Firebase. Я думаю, что проблема в методе fileUploader (), но я не уверен. Я чувствую, что делаю явно очевидную ошибку, и сейчас я перепробовал много разных вещей. Пожалуйста, помогите мне с этим. Заранее спасибо.

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