无法将ImageView中加载的图像上传到Firebase

时间:2019-12-27 11:04:06

标签: android android-camera firebase-storage

我已经成功打开相机,单击图像并在InageView中显示,但是当我单击“上载图像”按钮时,“ ELSE”条件正在执行,而不是“ if”条件

这是我的活动代码:

chooseImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
                startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
            }

        }
    });

btnUploadImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (mUploadTask != null && mUploadTask.isInProgress()) {
                Toast.makeText(GalleryActivity.this, "Upload in progress", Toast.LENGTH_LONG).show();
            } else {
                uploadImage();
            }
        }
    });


@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK && data!=null) {
            Bundle extras = data.getExtras();
             imageBitmap = (Bitmap) extras.get("data");
            imgPreview.setImageBitmap(imageBitmap);
            imgUrl = data.getData();

        }
    }

这是我的UploadImage方法:

 private void uploadImage() {
        if (imgUrl != null) {
            final StorageReference fileReference = mStorageRef.child(System.currentTimeMillis() + "." + "jpg");

            mUploadTask = fileReference.putFile(imgUrl)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                            Handler handler = new Handler();
                            handler.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    uploadProgress.setProgress(0);
                                }
                            }, 500);


                            fileReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                @Override
                                public void onSuccess(Uri uri) {
                                    Upload upload = new Upload( uri.toString());
                                    String uploadID = mDatabaseRef.push().getKey();
                                    mDatabaseRef.child(uploadID).setValue(upload);
                                    Toast.makeText(GalleryActivity.this, "Upload successfully", Toast.LENGTH_LONG).show();
                                    imgPreview.setImageResource(R.drawable.imagepreview);
//                                    imgDescription.setText("");
                                }
                            });


                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Toast.makeText(GalleryActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                        }
                    })
                    .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                            double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
                            uploadProgress.setProgress((int) progress);
                        }
                    });
        } else {
            Toast.makeText(GalleryActivity.this, "No file selected", Toast.LENGTH_SHORT).show();
        }
    }

这是我的布局XML代码:

    <ImageView
        android:id="@+id/imgPreview"
        android:layout_width="match_parent"
        android:layout_height="220dp"
        android:layout_below="@+id/txtUploadImage"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:src="@drawable/imagepreview" />

 <Button
        android:id="@+id/chooseImage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/uploadProgress"
        android:layout_marginTop="40dp"
        android:drawableStart="@drawable/icon_camera"
        android:text="Chooese Image from camera"
        android:textSize="18sp" />


 <Button
        android:id="@+id/btnUploadImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="20dp"
        android:layout_marginBottom="10dp"
        android:drawableStart="@drawable/icon_upload"
        android:text="Upload Image"
        android:textSize="18sp" />

UploadImage方法中的“ else”条件正在执行everyTime(未选择文件),如何成功获取URI并上传图像?

1 个答案:

答案 0 :(得分:0)

 btnUploadImage.setOnClickListener(new.     
 View.OnClickListener() {
         @Override
        public void onClick(View view) {
            if (mUploadTask != null && 
  mUploadTask.isInProgress()) {
                 Toast.makeText(GalleryActivity.this, "Upload in.       
   progress", Toast.LENGTH_LONG).show();
             } else {
                 uploadImage();
             }
         }
});

在上面的代码中,您正在检查是否满足条件
mUploadTask是否不为null,然后执行...。 这就是其他被执行的原因
因为mUploadTask仍然为空,即当您
时为null 点击上传按钮。