繁体   English   中英

将图像上传到firebase中的不同文件夹

[英]Uploading images to different folder in firebase

我正在创建一个应用程序,用户可以上传两种类型的图像,即他们的个人资料图片和他们的个人资料封面图片。 但是我在定义不同的过程时遇到了问题,因为我无法调用两个onActivityResult

这是我目前用于将个人资料图片上传到 firebase 存储的代码

  coverbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent galleryIntent = new Intent();
            galleryIntent.setType("image/*");
            galleryIntent.setAction(Intent.ACTION_GET_CONTENT);

            startActivityForResult(Intent.createChooser(galleryIntent, "SELECT IMAGE"), GALLERY_PICKER);
        }
    });

    mImagebtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            Intent galleryIntent = new Intent();
            galleryIntent.setType("image/*");
            galleryIntent.setAction(Intent.ACTION_GET_CONTENT);

            startActivityForResult(Intent.createChooser(galleryIntent, "SELECT IMAGE"), GALLERY_PICK);

        }
    });
}

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

    if (requestCode == GALLERY_PICK && resultCode == RESULT_OK) {

        mPdialog = new ProgressDialog(SettingsActivity.this);
        mPdialog.setTitle("Uploading");
        mPdialog.setMessage("please wait....");
        mPdialog.show();

        Uri imageUri = data.getData();

        CropImage.activity(imageUri)
                .setAspectRatio(1, 1)
                .setMinCropWindowSize(500,500)
                .start(SettingsActivity.this);

    }

    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
        CropImage.ActivityResult result = CropImage.getActivityResult(data);
        if (resultCode == RESULT_OK) {
            Uri resultUri = result.getUri();

            File file_thumb = new File(resultUri.getPath());

            String current_uid = mCurrentuser.getUid();

            Bitmap thumb_bitmap = new Compressor(this)
                    .setMaxWidth(200)
                    .setMaxHeight(200)
                    .setQuality(75)
                    .compressToBitmap(file_thumb);

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            thumb_bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            final byte[] thumb_byte = baos.toByteArray();

            StorageReference filepath = mImageReference.child("profile_images").child(current_uid + ".jpg");
            final StorageReference thumb_path = mImageReference.child("profile_images").child("thumbs").child(current_uid + ".jpg");
            filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

                    if (task.isSuccessful()){

                        final String download_url = task.getResult().getDownloadUrl().toString();
                        UploadTask uploadTask = thumb_path.putBytes(thumb_byte);
                        uploadTask.addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                            @Override
                            public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> thumb_task) {

                                String thumb_downloadurl = thumb_task.getResult().getDownloadUrl().toString();

                                if (thumb_task.isSuccessful()){

                                    Map update_hashmap = new HashMap();
                                    update_hashmap.put("image",download_url);
                                    update_hashmap.put("thumb_image", thumb_downloadurl);

                                    mDatabase.updateChildren(update_hashmap).addOnCompleteListener(new OnCompleteListener<Void>() {
                                        @Override
                                        public void onComplete(@NonNull Task<Void> task) {

                                            if (task.isSuccessful()){
                                                mPdialog.dismiss();
                                                Toast.makeText(SettingsActivity.this,"success",Toast.LENGTH_LONG).show();

                                            }
                                        }
                                    });
                                }else {
                                    Toast.makeText(SettingsActivity.this,"failed",Toast.LENGTH_LONG).show();
                                    mPdialog.dismiss();
                                }
                            }
                        });


                        }else {
                        Toast.makeText(SettingsActivity.this,"failed",Toast.LENGTH_LONG).show();
                        mPdialog.dismiss();

                    }
                }
            });

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

试试这个 Move startActivityForResult & intent outside 根据点击的按钮设置意图 requestCode

Intent galleryIntent = new Intent();
coverbtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        galleryIntent.setType("image/*");
        galleryIntent.setAction(Intent.ACTION_GET_CONTENT);


    }
});

mImagebtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        galleryIntent.setType("image/*");
        galleryIntent.setAction(Intent.ACTION_GET_CONTENT);


    }
});

} startActivityForResult(Intent.createChooser(galleryIntent, "SELECT IMAGE"), GALLERY_PICKER);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM