Невозможно загрузить изображения в Firebase Cloud Storage - PullRequest
2 голосов
/ 16 апреля 2020

Я пытаюсь загрузить изображения в Firebase Cloud Storage.But всякий раз, когда я go и выбираю изображение, которое мне нужно обрезать, после чего я просто возвращаюсь к предыдущему действию. У меня есть все разрешения на чтение и запись, но я все еще не могу загружать изображения.

И он также говорит, что эта строка всегда ложна

if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE)

Мой код

Profile_beta. java

  public class Profile_beta extends AppCompatActivity {

    CircleImageView image_profile;
    TextView username;
    MaterialButton uploadButon;

    DatabaseReference reference;
    FirebaseUser fuser;
    StorageReference storageReference;

    private static final int PICK_IMAGE_REQUEST = 1;
    private  int Storage_Permission_Req=1;
    private StorageTask uploadTask;

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

        image_profile =findViewById(R.id.profile_image);
        username = findViewById(R.id.username);


        storageReference = FirebaseStorage.getInstance().getReference("uploads");

        //fuser = FirebaseAuth.getInstance().getCurrentUser();
        //reference = FirebaseDatabase.getInstance().getReference("Users").child(fuser.getUid());

        image_profile.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (ContextCompat.checkSelfPermission(Profile_beta.this,
                        Manifest.permission.READ_EXTERNAL_STORAGE)== PackageManager.PERMISSION_GRANTED){
                    openFileChooser();
                }
                else{
                    requestStoragePermission();
                }
            }
        });
    }

    private void openFileChooser() {

        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_GET_CONTENT);
        intent.setType("image/*");
        startActivityForResult(intent, PICK_IMAGE_REQUEST);

    }

    private void requestStoragePermission() {
        ActivityCompat.requestPermissions(Profile_beta.this,new String[]
                {Manifest.permission.READ_EXTERNAL_STORAGE},Storage_Permission_Req);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if(requestCode==Storage_Permission_Req){
            if (grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                Toast.makeText(Profile_beta.this,"Permission Granted",Toast.LENGTH_SHORT).show();
                openFileChooser();
            }
            else {
                Toast.makeText(Profile_beta.this,"Permission Not Granted",Toast.LENGTH_SHORT).show();
            }

        }
    }

    @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 ) {
            Uri ImageUri = data.getData();

            CropImage.activity(ImageUri)
                    .setGuidelines(CropImageView.Guidelines.ON)
                    .setAspectRatio(1,1)
                    .start(this);

            if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {

                CropImage.ActivityResult result = CropImage.getActivityResult(data);

                if (resultCode == RESULT_OK) {
                    Uri resultUri = result.getUri();

                    String fuser;
                    fuser = FirebaseAuth.getInstance().getCurrentUser().getUid();
                    reference = FirebaseDatabase.getInstance().getReference("Users").child(fuser);

                    StorageReference filepath=storageReference.child(fuser+".jpg");
                    image_profile.setImageURI(resultUri);

                    filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                            if (task.isSuccessful()) {
                                Toast.makeText(Profile_beta.this, "Profile Image Updated", Toast.LENGTH_SHORT).show();
                            }

                        }
                    });

                } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
                    Exception error = result.getError();
                }

            }



        }
    }
}

1 Ответ

1 голос
/ 16 апреля 2020

Вы должны использовать так:

if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
            && data != null ) {
        Uri ImageUri = data.getData();

        CropImage.activity(ImageUri)
                .setGuidelines(CropImageView.Guidelines.ON)
                .setAspectRatio(1,1)
                .start(this);
}else if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
            CropImage.ActivityResult result = CropImage.getActivityResult(data);
            if (resultCode == RESULT_OK) {
                Uri resultUri = result.getUri();

                //.....

            } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
               //...
            }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...