CS_admin
CS_admin

Reputation: 11

Hello, I have problem to upload my image to my firebase storage

I was watching YouTube for the instruction implementing storing image to firebase storage.

But, I got an error with getDownloadUrl() I do not know why, it was given codes from firebase helper.

public class SellerPage extends AppCompatActivity {

    EditText Address;
    EditText price;
    EditText description;
    Button register;
    Button chooseImage;
    private FirebaseAuth auth;
    private FirebaseFirestore mFirestore;
    private StorageReference mStorageRef;
    private static final int RESULT_LOAD_IMAGE = 1;
    private static final int IMAGE_PICK_CODE = 1000;
    private static final int PERMISSION_CODE = 1001;
    ImageView View;
    public Uri imgUir;
    private StorageTask uploadTask;

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

        auth = FirebaseAuth.getInstance();
        mFirestore= FirebaseFirestore.getInstance();
        mStorageRef = FirebaseStorage.getInstance().getReference("Images"); // Storage for the image

        Address = (EditText) findViewById(R.id.Address);
        price = (EditText) findViewById(R.id.Price);
        description = (EditText) findViewById(R.id.description);
        register = (Button) findViewById(R.id.addButton);
        chooseImage = (Button)  findViewById(R.id.image);
        View = (ImageView) findViewById(R.id.imageView);


        chooseImage.setOnClickListener(new View.OnClickListener() {
                                           @Override
                                           public void onClick(View v) {
                                               // Check runtime permission
                                               if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
                                                   if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
                                                           == PackageManager.PERMISSION_DENIED){
                                                       // permission not granted. then request it
                                                       String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE};
                                                       requestPermissions(permissions, PERMISSION_CODE);

                                                   }else{
                                                       //permition already granted
                                                       pickImageFromGallay();

                                                   }
                                               }else{
                                                   // OS is less than marshmello
                                                   pickImageFromGallay();
                                               }
                                           }
                                       }
        );


        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FileUploader();
                addSellerInfo();
            }
        });

    }


    private void pickImageFromGallay(){

        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType("image/*");
        startActivityForResult(intent, IMAGE_PICK_CODE);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode,  Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == RESULT_OK && requestCode == IMAGE_PICK_CODE && data != null){
            imgUir = data.getData();
            View.setImageURI(data.getData());
        }
    }




    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch(requestCode){
            case PERMISSION_CODE:{
                if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    pickImageFromGallay();
                }else{
                    Toast.makeText(this,"Permission denied!", Toast.LENGTH_SHORT).show();
                }
            }
        }
    }

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

    }

private void FileUploader(){
final StorageReference Ref = mStorageRef.child(System.currentTimeMillis()+ "." + getExtension(imgUir));

    Ref.putFile(imgUir)
            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    // Get a URL to the uploaded content
                    //Uri downloadUrl = taskSnapshot.getDownloadUrl();
                    Toast.makeText(SellerPage.this, "Uploading Image Successful", Toast.LENGTH_LONG).show();
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception exception) {
                    // Handle unsuccessful uploads
                    // ...
                }
            });

}

    public void addSellerInfo(){
        FirebaseUser user = auth.getCurrentUser();
        String ID = user.getUid();
        String addressStr = Address.getText().toString().trim();
        String priceStr = price.getText().toString().trim();
        String descriptionStr = description.getText().toString().trim();

        CollectionReference parkspaces = mFirestore.collection("parkspaces");
        sellerData parkspace = new sellerData(ID, addressStr, priceStr, descriptionStr);
        parkspaces.add(parkspace);
    }





}

Upvotes: 1

Views: 55

Answers (1)

Ashish
Ashish

Reputation: 6919

call getDownloadUrl(), the call is asynchronous and you must subscribe on a success callback to obtain the results:

Ref.putFile(imgUir)
    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                Ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri downloadPhotoUrl) {
                        Log.e("downloaduri", downloadPhotoUrl.toString());
                        Toast.makeText(SellerPage.this, "Uploading Image Successful", Toast.LENGTH_LONG).show();
                    }
                });
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                // Handle unsuccessful uploads
                // ...
            }
        });

Upvotes: 1

Related Questions